参考:
介绍
NPM 是随同 node.js 一起安装的包管理工具,能解决 node.js 代码部署上的很多问题。
常见的使用场景有以下几种:
- 允许用户从 NPM 服务器下载,别人编写的第三方包到本地使用。
- 允许用户从 NPM 服务器下载并安装,别人编写的命令行程序到本地使用。
- 允许用户将自己编写的包或命令行程序,上传到 NPM 服务器供别人使用。
通过查看版本信息,检测是否安装:
|
|
如果你安装的是旧版本的 npm,可以很容易得通过 npm 命令来升级,命令如下:
|
|
命令行使用方式
本地安装
以 express
为例,安装方式为:
|
|
这种安装方式:
- 将安装包放在
./node_modules
下(运行 npm 命令时所在的目录),如果没有node_modules
目录,会在当前执行 npm 命令的目录下生成node_modules
目录。 - 可以通过
require()
来引入本地安装的包。
全局安装
以 express
为例,安装方式为:
|
|
这种安装方式:
- 将安装包放在
/usr/local
下或者你node
的安装目录。 - 可以直接在命令行里使用。
链接
npm link
用来在本地项目和本地 npm 模块之间建立连接,可以在本地进行模块测试:
项目和模块在同一个目录下,可以使用相对路径
1
npm link ../module
项目和模块不在同一个目录下:
1 2 3
cd module && npm link # 进行全局link cd project && npm link <Module Name> # 模块名指 package.json 中的 name
解除 link:
1 2 3 4 5
# 解除项目和模块 link cd project && npm unlink <Module Name> # 解除模块全局 link cd module && npm unlink <Module Name>
如果你希望兼具本地安装、全局安装的功能,则需要在两个地方安装它或使用 npm link
。
查看安装信息
你可以用以下的命令查看所有全局安装的模块:
|
|
如果要查看某个模块的版本号,可以使用命令如下:
|
|
卸载模块
我们可以使用以下命令来卸载 Node.js 模块。
|
|
卸载后,你可以到 /node_modules/
目录下查看包是否还存在,或者使用以下命令查看:
|
|
更新模块
我们可以使用以下命令更新模块:
|
|
把当前目录下 node_modules
子目录里边的对应模块更新至最新版本:
|
|
把全局安装的对应命令行程序更新至最新版:
|
|
创建模块
创建模块,package.json
文件是必不可少的。
我们可以使用 NPM 生成 package.json
文件,生成的文件包含了基本的结果。
|
|
以上的命令会要求输入信息,需要根据个人的情况输入。在最后输入 “yes” 后会生成 package.json 文件。
接下来我们可以使用以下命令在 npm 资源库中注册用户(使用邮箱注册):
|
|
接下来我们就用以下命令来发布模块:
|
|
其他常用命令
除了本章介绍的部分外,NPM还提供了很多功能,package.json 里也有很多其它有用的字段。详细可以参考官方文档:npmjs.org/doc/。
这里再介绍一些NPM常用命令。
使用 查看某条命令的详细帮助,例如 install
1
npm help install
在
package.json
所在目录下使用:1
npm install . -g
可先在本地安装当前命令行程序,可用于发布前的本地测试。
清空 NPM 本地缓存,用于对付使用相同版本号发布新版本代码的人:
1
npm cache clear
撤销发布自己发布过的某个版本代码:
1
npm unpublish @
使用以下来搜索模块:
|
|
补充
版本号
使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。
语义版本号分为 X.Y.Z
三位,分别代表主版本号、次版本号和补丁版本号。
当代码变更时,版本号按以下原则更新:
- 如果只是修复 bug,需要更新 Z 位。
- 如果是新增了功能,但是向下兼容,需要更新 Y 位。
- 如果有大变动,向下不兼容,需要更新 X 位。
版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。
使用淘宝 NPM 镜像
大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。
淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。
你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm:
|
|
这样就可以使用 cnpm 命令来安装模块了:
|
|
更多信息可以查阅:http://npm.taobao.org/。