Node.js的包详细介绍

网络编程 2021-07-04 21:47www.168986.cn编程入门
这篇文章主要介绍了Node.js的包详细介绍,Node.js的包是一个目录,其中包含JSON格式的包说明文件package.json,Node.js的包基本遵循CommonJS规范,需要的朋友可以参考下

在Node.js语言中,包和模块并没有本质的不同,包是在模块的基础上更深一步的抽象,包将某个独立的功能封装起来,用于发布、更新、依赖管理和进行版本控制。Node.js根据CommonJS规范实现了包机制,开发了npm来解决包的发布和获取需求。

Node.js的包是一个目录,其中包含JSON格式的包说明文件package.json。Node.js的包基本遵循CommonJS规范,具备以下特征

CommonJS规范定义的包特性

1)顶层目录包含package.json文件;
2)bin目录存放二进制文件;
3)lib目录存放JavaScript文件;
4)doc目录存放文档;
5)test目录存放单元测试。

Node.js的模块与文件是一一对应的,文件不仅可以是JavaScript源码文件或二进制文件,还可以是目录。最简单的包,就是一个目录的模块。

Node.js的包通常是一些模块的集合,在模块的基础上提供了更高层的抽象,相当于提供了一些固定接口的函数库。
通过定制package.json,我们可以创建更复杂、更完善、更符合规范的包用于发布。

Node.js在调用包时,会检查包中的package.json文件的main字段,将其作为包的接口模块,如果package.json文件的main字段不存在,那么Node.js会尝试寻找index.js或index.node作为包的接口。

package.json文件是CommonJS规范用于描述包的文件,完全符合规范的package.json文件应该包含以下字段
1)name包名。包名是唯一的,由小写字母、数字和下划线组成,不能含空格。
2)description包说明。对包进行简要描述。
3)version版本号。满足《语义化版本识别》规范的版本字符串。
4)keywords关键字数组,通常用于搜索。
5)maintainers维护者数组。每个元素包含name、email(可选)、web(可选)字段。
6)contributors贡献者数组。格式与maintainer数组相同。包作者应该是贡献者数组的第一个元素。
7)bugs提交bug的地址,可以是网址或电邮地址。
8)licenses许可证数组。每个元素要包含type(许可证名称)和url(链接到许可证文本的地址)字段。
9)repositories仓库托管地址数组。每个元素要包含type(仓库的类型,如Git)、url(仓库地址)和path(相对于仓库的路径,可选)字段。
10)dependencies包依赖。是一个关联数组,由包名和版本号组成。

注《语义化版本识别》规范是国外提出的一套版本命名规范,最初目的是解决各种各样的版本号大小比较的问题,目前被许多包管理系统所采用。

狼蚁网站SEO优化是一个完全符合CommonJS规范的package.json例子

代码如下:

{  
  "name": "testpackage", 
  "description": "My package for CommonJS.", 
  "version": "0.1.0", 
  "keywords": [ 
     "testpackage", 
     "liq" 
  ],  
  "maintainers": [ 
     { 
        "name": "liq", 
        "email": "liq@hotmail.", 
     } 
  ], 
  "contributors": [ 
     { 
        "name": "liq", 
        "web": "http://blog.csdn./chszs" 
     } 
  ], 
  "bugs": { 
     "mail": "liq@hotmail.", 
     "web": "http://blog.csdn./chszs" 
  }, 
  "licenses": [ 
     { 
        "type": "Apache License v2", 
        "url": "http://.apache./licenses/apache2.html" 
     } 
  ], 
  "repositories": [ 
     { 
        "type": "git", 
        "url": "http://github./chszs/packagetest.git" 
     } 
  ], 
  "dependencies": {  
     "webkit": "1.2", 
     "ssl": {  
        "gnutls": ["1.0", "2.0"], 
        "openssl": "0.9.8" 
     } 
  } 
}

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by