npm-update
概要
npm update [-g] [<pkg>...]
aliases:up,upgrade
描述
这个命令将更新所有的包到指定主版本下的最新版本,要符合semver规范。
若node_modules下包缺失,但package.json的dependencies指定了依赖包,此命令还会重新安装新包。若命令中加上--save-dev的话,还会安装devDependencies下丢失的包。
> npm update --save-dev
- 如果指定了-g标志,则该命令将更新全局安装的包。
> npm update -g
- 若指定包名,则仅更新指定的包;若没有指定包名,则更新所有的包。
> npm update jquery
- [email protected]及之后版本,npm update只会检查顶级依赖项的包。但在这之前的版本会递归地检查所有的依赖关系的包。若想和旧版本一样功能,递归所有依赖关系的包,使用方式如下。
> npm --depth 9999 update
例子
注意:这些例子针对的是[email protected]或之后版本。对于旧版本npm,命令中必须指定--depth 0。
对于下面的例子,假设当前的包是app,它的依赖包有dep1(dep2等等)。dep1发布的版本:
{
"dist-tags": { "latest": "1.2.2" },
"versions": [
"1.2.2",
"1.2.1",
"1.2.0",
"1.1.2",
"1.1.1",
"1.0.0",
"0.4.1",
"0.4.0",
"0.2.0"
]
}
Caret Dependencies
若app的package.json写入的是:
"dependencies": {
"dep1": "^1.1.1"
}
运行npm update将安装[email protected],由于^1.1.1相当于>=1.1.1 <2.0.0,其中满足条件的版本有好几个,选择符合条件中的最大的版本,即1.2.2。
Tilde Dependencies
若app的package.json写入的是:
"dependencies": {
"dep1": "~1.1.1"
}
在这种情况下,运行npm update将会安装[email protected]。即使latest标签指向1.2.2,也不会安装1.2.2。由于~1.1.1这相当于>=1.1.1 <1.2.0,所以能满足的版本,只有1.1.2。
Caret Dependencies below 1.0.0
若app依赖的包dep1版本低于1.0.0,例如:
"dependencies": {
"dep1": "^0.2.0"
}
npm update将安装[email protected],^0.2.0相当于 >=0.2.0 <0.3.0,因为没有其他版本满足,所以更新版本仍为0.2.0。
更新全局的安装包
npm update -g将把该update操作应用于每个全局的安装包,配合outdated命令,查看哪些包需要更新。