13-npm 包管理
安装包
npm 的包安装分为本地安装(local)、全局安装(global)两种。
安装指定版本
1 |
|
本地安装(默认)
1 |
|
- 将安装包放在
./node_modules
下(运行 npm 命令时所在的目录),如果没有node_modules
目录,会在当前执行 npm 命令的目录下生成node_modules
目录。 - 可以通过
require()
来引入本地安装的包。
全局安装
1 |
|
- 将安装包放在
/usr/local
下或者你 node 的安装目录。 - 可以直接在命令行里使用。这是使用全局安装的主要原因。
使用下面的命令来查看全局的包安装的位置:
1 |
|
创建全局链接
如果你希望具备两者功能(本地安装和全局安装的功能),则需要在两个地方安装它或使用 npm link。
npm link的功能是在本地包和全局包之间创建符号链接。我们说过 使用全局模式安装的包不能直接通过 require 使用,但通过 npm link
命令可以打破这一限制。
比如我们将 express安装到了全局环境,使用下面的命令可以将其链接到本地环境:
1 |
|
使用 npm link命令还可以将本地的包链接到全局。使用方法是在包目录( package.json 所在目录)中运行 npm link
命令。
如果你的项目不再需要该模块,可以在项目目录内使用 npm unlink
命令,删除符号链接。
像 gem 或 pip 总是以全局模式安装,使包可以供所有的程序使用,而 npm 默认会把包安装到当前目录下。这反映了 npm 不同的设计哲学。如果把包安装到全局,可以提高程序的重复利用程度,避免同样的内容的多份副本,但坏处是难以处理不同的版本依赖。
查看安装信息
安装信息和它们的依赖
1 |
|
更新包
1 |
|
卸载包
1 |
|
搜索包
1 |
|
发布包
在发布之前,首先需要让我们的包符合 npm 的规范,npm 有一套以 CommonJS 为基础包规范,但与 CommonJS并不完全一致,其主要差别在于必填字段的不同。通过使用 npm init
可以根据交互问答产生一个符合标准的 package.json。
创建帐号:
1 |
|
测试是否取得帐号:
1 |
|
发布
1 |
|
更新包:修改 version字段,再重新发布
取消发布:
1 |
|
版本号
使用NPM下载和发布代码时都会接触到版本号。NPM使用语义版本号来管理代码,这里简单介绍一下。
语义版本号分为X.Y.Z三位,分别代表主版本号、次版本号和补丁版本号。当代码变更时,版本号按以下原则更新。
- 如果只是修复bug,需要更新Z位。
- 如果是新增了功能,但是向下兼容,需要更新Y位。
- 如果有大变动,向下不兼容,需要更新X位。
版本号有了这个保证后,在申明第三方包依赖时,除了可依赖于一个固定版本号外,还可依赖于某个范围的版本号。例如”argv”: “0.0.x”表示依赖于0.0.x系列的最新版argv。
NPM支持的所有版本号范围指定方式可以查看官方文档。