- 包的定义
- 英文名叫做 Packages,包是在模块基础上更深一步的抽象,目的是:方便分发推广基于 CommonJS 规范实现的 应用程序 或 类库;
- 包可以看作是 模块、代码 和 其它资源 组合起来形成的 独立作用域;
- 包的基本规范
- 包都要以一个单独的目录而存在;
- package.json 必须在包的顶层目录下;
- package.json 文件必须符合 JSON 格式,并且必须包含如下三个属性:name, version, main
{
"name": "webTemplate",// 包的名字
"version": "1.0.0",//包的版本号
"main": "./lib/index.js"//包的入口文件
}
- 二进制文件应该在bin目录下;
- javaScript代码应该在lib目录下;
- 文档应该在doc目录下;
- 单元测试应该在test目录下;
- Node.js对包要求并没有那么严格,只要顶层目录下有package.json,并符合基本规范即可;
-
包描述文件 package.json
name:包的名称,必须是唯一
description:包的简要说明
version:符合语义化版本识别规范的版本字符串
keywords:关键字数据,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email、web可选字段
contributors:贡献者数组,格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素
bugs:提交bug的地址,可以是网址或者电子邮件地址
licenses:许可证数组,每个元素要包含type和url字段
repositories:仓库托管地址数组,每个元素要包含type、url和path字段
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
devDependencies:开发依赖项,表示一个包在开发期间用到的依赖项 -
包的导入规则
- 当我们导入一个包的时候,会先在 包的根目录中,查找一个叫做
package.json
的文件 - 如果有
package.json
文件,则会继续查找这个文件中的,一个叫做main
的属性 - 如果能找到
main
属性,则尝试加载 main 属性所指向的那个文件 - 如果这个文件加载成功,则这个包,就已经被正常 require 进来了,就可以正常使用了