Node.js的包详细介绍
作者:bea
在Node.js语言中,包和模块并没有本质的不同,包是在模块的基础上更深一步的抽象,包将某个独立的功能封装起来,用于发布、更新、依赖管理和进行版本控制。Node.js根据CommonJS规范实现了包机制,开发了npm来解决包的发布和获取需求。 Node.js的包是一个目录,其中包含JSON格式的包说明文件package.json。Node.js的包基本遵循CommonJS规范,因此具备以下特征: CommonJS规范定义的包特性: 1)顶层目录包含package.json文件
在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:包依赖。是一个关联数组,由包名和版本号组成。
注:《语义化版本识别》规范是国外提出的一套版本命名规范,最初目的是解决各种各样的版本号大小比较的问题,目前被许多包管理系统所采用。
下面是一个完全符合CommonJS规范的package.json例子:
代码如下:
{
"name": "testpackage",
"description": "My package for CommonJS.",
"version": "0.1.0",
"keywords": [
"testpackage",
"liq"
],
"maintainers": [
{
"name": "liq",
"email": "liq@hotmail.com",
}
],
"contributors": [
{
"name": "liq",
"web": "http://blog.csdn.net/chszs"
}
],
"bugs": {
"mail": "liq@hotmail.com",
"web": "http://blog.csdn.net/chszs"
},
"licenses": [
{
"type": "Apache License v2",
"url": "http://www.apache.org/licenses/apache2.html"
}
],
"repositories": [
{
"type": "git",
"url": "http://github.com/chszs/packagetest.git"
}
],
"dependencies": {
"webkit": "1.2",
"ssl": {
"gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}
有用 | 无用
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:包依赖。是一个关联数组,由包名和版本号组成。
注:《语义化版本识别》规范是国外提出的一套版本命名规范,最初目的是解决各种各样的版本号大小比较的问题,目前被许多包管理系统所采用。
下面是一个完全符合CommonJS规范的package.json例子:
代码如下:
{
"name": "testpackage",
"description": "My package for CommonJS.",
"version": "0.1.0",
"keywords": [
"testpackage",
"liq"
],
"maintainers": [
{
"name": "liq",
"email": "liq@hotmail.com",
}
],
"contributors": [
{
"name": "liq",
"web": "http://blog.csdn.net/chszs"
}
],
"bugs": {
"mail": "liq@hotmail.com",
"web": "http://blog.csdn.net/chszs"
},
"licenses": [
{
"type": "Apache License v2",
"url": "http://www.apache.org/licenses/apache2.html"
}
],
"repositories": [
{
"type": "git",
"url": "http://github.com/chszs/packagetest.git"
}
],
"dependencies": {
"webkit": "1.2",
"ssl": {
"gnutls": ["1.0", "2.0"],
"openssl": "0.9.8"
}
}
}
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- jQuery老黄历完整实现方法
- jquery中one()方法的用法实例
- jquery中show()、hide()和toggle()用法实例
- 用js判断是否为360浏览器的实现代码
- jquery果冻抖动效果实现方法
- jquery通过ajax加载一段文本内容的方法
- js实现遮罩层弹出框的方法
- jquery隔行换色效果实现方法
- JavaScript中实现依赖注入的思路分享
- jquery实现textarea输入框限制字数的方法
- jquery单选框radio绑定click事件实现方法
- jquery移动节点实例
- jquery获取checkbox的值并post提交
- 使用jquery 简单实现下拉菜单
- jquery实现鼠标滑过小图时显示大图的方法
- js实现禁止中文输入的方法
- JavaScript 学习笔记之语句
- JavaScript 学习笔记之操作符(续)
- JavaScript 学习笔记之操作符