npm-update
更新包概要
npm update [-g] [<pkg>...]aliases: up, upgrade
描述
此命令会将列出的所有包更新到最新版本(由 tag
配置指定),尊重 semver。
它还将安装缺少的包。 与安装包的所有命令一样,--dev
标志也会导致 devDependencies
被处理。
如果指定了 -g
标志,此命令将更新全局安装的包。
如果未指定包名称,则将更新指定位置(全局或本地)中的所有包。
从 npm@2.6.1
开始,npm update
将只检查顶层包。
npm
的早期版本也将递归检查所有依赖。
要获得旧行为,请使用 npm --depth 9999 update
。
从 npm@5.0.0
开始,npm update
将更改 package.json
以保存新版本作为最低要求的依赖。 要获得旧行为,请使用 npm update --no-save
。
示例
重要版本注意: 这些示例假定 npm@2.6.1
或更高版本。 对于旧版本的 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"]}
插入符号依赖
如果 app
的 package.json
包含:
"dependencies": {"dep1": "^1.1.1"}
那么 npm update
会安装 dep1@1.2.2
,因为 1.2.2
就是 latest
,1.2.2
满足 ^1.1.1
。
波浪号依赖
但是,如果 app
的 package.json
包含:
"dependencies": {"dep1": "~1.1.1"}
在这种情况下,运行 npm update
将安装 dep1@1.1.2
。 尽管 latest
标签指向 1.2.2
,但这个版本不满足 ~1.1.1
,相当于 >=1.1.1 <1.2.0
。 所以使用满足 ~1.1.1
的最高排序版本,即 1.1.2
。
低于 1.0.0 的插入符号依赖
假设 app
对低于 1.0.0
的版本有插入符号依赖,例如:
"dependencies": {"dep1": "^0.2.0"}
npm update
会安装 dep1@0.2.0
,因为没有其他版本可以满足 ^0.2.0
。
如果依赖于 ^0.4.0
:
"dependencies": {"dep1": "^0.4.0"}
那么 npm update
会安装 dep1@0.4.1
,因为那是满足 ^0.4.0
(>= 0.4.0 <0.5.0
)的最高排序版本
更新全局安装的包
npm update -g
将对每个全局安装的 outdated
包应用 update
操作 - 也就是说,具有与 wanted
不同的版本。
注意: 全局安装的包被视为安装时指定了插入符号 semver 范围。 因此,如果你需要更新到 latest
,你可能需要运行 npm install -g [<pkg>...]
注意: 如果包已升级到比 latest
更新的版本,它将被降级。