本节主要是学习npm的一些常用功能。CommonJS包规范是理论,npm是其中的一种实践。对node而言,npm帮助完成了第三方模块的发布,安装,依赖等。借助npm,node与第三方模块之间形成了一个很好的生态系统。
借助npm可以快速的安装和管理依赖包。
1. npm常用的一些命令
1 | add-user, adduser, apihelp, author, bin, bugs, c, cache, completion, config, ddp, dedupe, deprecate, docs, |
每种命令是什么含义,可以通过npm help
2. 安装依赖包
npm最常用的方法就是安装依赖包,使用的命令是
1 | npm install packageName |
执行命令后npm会在当前的目录下创建node_modules目录,然后在node_module目录下创建packageName目录,接着会将包解压到这个目录下。
安装完成后可以直接通过require(‘pakeageName’),即可引入该包。
a. 全局安装
执行以下命令进行全局模式安装。
1 | npm install packageName -g |
b. 从本地安装
对于一些没有发布在npm上的包,或是因为网络原因导致无法直接安装的包,可以通过将包下载到本地,然后以本地安装。本地安装只需要为npm指明package.json文件所在的位置即可:它可以是一个包含package.json的存档文件,也可以是一个url地址,也可以是一个目录下有package.json文件的目录位置。
1 | npm install <tarball file> |
c. 从非官方源安装
如果不能通过官方源安装,可以通过镜像源安装。在执行命令的时候,添加
1 | --registry=http://registry.url |
3. npm钩子命令
在package.json中scripts字段的提出就是让包在安装或者卸载的过程中提供钩子机制,例如:1
2
3
4"preinstall": "preinstall.js",
"install": "install.js",
"uninstall": "uninstall.js",
"test": "test.js"
在以上字段中执行npm install
4. 发布包
a. 编写模块
1 | exports.demo = function (){ |
b. 初始化包描述文件
使用npm init命令初始化,生成package.json文件,在npm init的时候npm回通过提问式的交互逐个填入选项,最后生成预览的包描述文件。
c. 注册包仓库账号
为了维护包,npm必须要使用仓库账号才允许将包发布到仓库中。注册账号的命令是npm adduser,这个命令也是一个提问式的交互过程,依次填入即可。
d. 上传包
上传包的命令是npm publish
在刚刚创建的package.json文件所在的目录下执行npm publish 开始上传包
e. 安装包
通过npm install <刚才上传的包名> 命令可以安装刚才上传的包
f. 管理包权限
可以使用npm owner命令管理包的所有者,可使用的命令有1
2
3npm owner ls <package name>
npm owner add <user> <package name>
npm owner rm <user> <package nameb>