CommonJS 的包规范的定义:它由包结构和包描述文件两部分组成,包结构用于组织包中的各种文件,包描述用于描述包的相关信息。
package.json
:包描述文件
bin
:用于存放可执行二进制代码的目录
lib
:用于存放 JavaScript 代码的目录
doc
:用于存放文档的目录
test
:用于存放单元测试用例的代码
CommonJS 为 package.json
文件定义了如下一些必须的字段
name
:由小写字母和数字组成,可以包含 . 、 _ 和 -,但是不允许出现空格。
description
:简介
version
:版本号
keywords
:关键词数组
maintainers
:包维护者列表 [{ ...msg }]
contributors
:贡献者列表
bugs
:一个可以反馈 bug 的邮箱或者网页地址
licenses
:许可证列表,表示这个包可以在哪些许可证下使用
repositories
:托管源代码的地址
dependencies
:依赖的包列表
homepage
:包的网站地址
os
:操作系统支持列表
engine
:支持的 JavaScript 引擎列表
builtin
:是否是内建在底层系统的标准组件
directories
:包目录说明
implements
:实现规范的列表
scripts
:脚本说明对象
在包的描述文件规范中,NPM 实际需要的字段主要有 name
, version
, description
, keywords
repositories
、 author
、 bin
、 main
、 scripts
、 engines
、 dependencies
、 devDependencies
与包规范的区别是多了 author
、 bin
、 main
和 devDependencies
这四个字段
author
:包作者
bin
:包可以作为命令行工具使用
main
:在模块引入的时候会先检查这个字段作为入口
devDependencies
:只在开发阶段依赖的包
NPM 帮助完成第三方模块的发布、安装和依赖。
npm install express
上面这行命令执行后,NPM 会在当前目录下创建 node_modules
目录,然后在 node_modules
目录下创建 express
目录,接着将包解压到这个目录下
-g
就是将一个包安装为全局可用的可执行命令,通过 -g
安装的包都被安装进了统一一个目录下,就是 Node 可执行文件的位置。
将包下载到本地,在本地安装只需要为 NPM 指明 package.json
文件的地址即可
package.json
的存档文件 package.json
文件 npm install express --registry=http://registry.url
"scripts": { "preinstall": "preinstall.js", "install": "install.js", "uninstall": "uninstall.js", "test": "test.js" }
编写一个包,将其发布到 NPM 库当中,并通过 NPM 安装取回本地。
// hello.js exports.sayHello = function(){ return 'hello world!' }
npm inti
npm adduser
npm publish .
这个过程中,NPM 会将目录打包为一个存档文件,然后上传到官方源仓库中
管理有权限发布包的人
npm owner ls <package name> npm owner add <user> <package name> npm owner rm <user> <package name>