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,它依赖于依赖 dep1dep2、.. 等)。 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"
]
}

插入符号依赖

如果 apppackage.json 包含:

"dependencies": {
"dep1": "^1.1.1"
}

那么 npm update 会安装 dep1@1.2.2,因为 1.2.2 就是 latest1.2.2 满足 ^1.1.1

波浪号依赖

但是,如果 apppackage.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 更新的版本,它将被降级。

也可以看看

npm 中文网 - 粤ICP备13048890号