npm 更新 update
更新包
概要
npm update [-g] [<pkg>...]
aliases: up, upgrade
详情
此命令会将列出的所有包更新为最新版本(由tag
配置指定),尊重包及其依赖项的 semver 约束(如果它们也需要相同的包)。
它还将安装缺少的软件包。
如果-g
指定了标志,此命令将更新全局安装的包。
如果未指定包名称,则将更新指定位置(全局或本地)中的所有包。
实例
对于下面的示例,假设当前包是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
)的最高排序版本
子依赖
假设你的应用现在也依赖于 dep2
:
{
"name": "my-app",
"dependencies": {
"dep1": "^1.0.0",
"dep2": "1.0.0"
}
}
并且 dep2
本身取决于 dep1
这个有限的范围:
{
"name": "dep2",
"dependencies": {
"dep1": "~1.1.1"
}
}
然后使用npm update
将安装dep1@1.1.2
,因为这是dep2
允许的最高版本。当单个版本可以满足树中多个依赖项的 semver 要求时,npm 将优先考虑树中的单个版本的 dep1
而不是两个。在这种情况下,如果你确实需要你的包使用较新版本,则需要使用npm install
.
更新全局安装的软件包
npm update -g
将update
操作应用于每个全局安装的包outdated
- 也就是说,具有不同于 latest
.
注意:全局安装的包被视为安装时制定了插入符号范围。因此,如果你需要更新到 lastest
你可能需要运行 npm install -g [<pkg>...]
。
注意:如果软件包已升级到比 更新的版本latest
,它将被降级。
配置
global 全局
- 默认值:
false
- 类型:
Boolean
在 global
模式下运行,以便将包安装到prefix
文件夹而不是当前工作目录中。有关行为差异的更多信息,请参阅[文件夹]()。
- 软件包安装到
{prefix}/lib/node_modules
文件夹中,而不是当前工作目录中。 - bin 文件链接到
{prefix}/bin
- 手册页链接到
{prefix}/share/man
global-style 全局风格
- 默认值:
false
- 类型:
Boolean
使 npm 以node_modules
与全局node_modules
文件夹相同的布局将包安装到本地文件夹中。只有您的直接依赖项会显示在其中,node_modules
并且它们所依赖的所有内容都将在其node_modules
文件夹中展平。这显然会消除一些重复数据删除。如果与 一起使用legacy-bundling
,legacy-bundling
将是首选。
legacy-bundling
- 默认值:
false
- 类型:
Boolean
使 npm 安装包,以便 1.4 之前的 npm 版本,例如 node 0.8 中包含的版本,可以安装该包。这消除了所有自动重复数据删除。如果与global-style
此选项一起使用将是首选。
strict-peer-deps 严格对等依赖
- 默认值:
false
- 类型:
Boolean
如果设置为true
,并且--legacy-peer-deps
未设置,则任何 冲突peerDependencies
都将被视为安装失败,即使 npm 可以根据非对等依赖关系合理猜测适当的解决方案。
默认情况下,peerDependencies
依赖关系图中的深层冲突将使用最近的非对等依赖项规范来解决,即使这样做会导致某些包接收在其包peerDependencies
对象中设置的范围之外的对等依赖项。
当执行此类和覆盖时,会打印警告,解释冲突和所涉及的包。如果--strict-peer-deps
设置,则此警告被视为失败。
package-lock 包锁
- 默认值:
true
- 类型:
Boolean
如果设置为 false,则package-lock.json
在安装时忽略文件。如果为真,这也将阻止写入 。package-lock.json``save
当包包锁被禁用时,无关模块的自动修剪也将被禁用。要删除禁用包锁的无关模块,请使用npm prune
.
omit 忽略
- 默认值:如果
NODE_ENV
环境变量设置为 'production',则为'dev ',否则为空。 - 类型:“dev”、“optional”或“peer”(可多次设置)
要从磁盘上的安装树中省略的依赖项类型。
请注意,这些依赖的仍然解决,加入 package-lock.json
或npm-shrinkwrap.json
文件。它们只是没有物理安装在磁盘上。
如果包类型同时出现在--include
和--omit
列表中,则它将被包含在内。
如果生成的省略列表包含'dev'
,则NODE_ENV
环境变量将被设置'production'
为所有生命周期脚本。
ignore-scripts 忽略脚本
- 默认值:
false
- 类型:
Boolean
如果为 true,则 npm 不会运行 package.json 文件中指定的脚本。
请注意,明确用于运行特定脚本的命令,例如 npm start
, npm stop
, npm restart
, npm test
, 并且npm run-script
如果ignore-scripts
已设置仍将运行其预期脚本,但它们不会运行任何前置或后置脚本。
audit 审计
- 默认值:
true
- 类型:
Boolean
当为“true”时,将审计报告与当前 npm 命令一起提交到默认注册表和为范围配置的所有注册表。有关npm audit
提交内容的详细信息,请参阅文档。
bin-links
- 默认值:
true
- 类型:
Boolean
告诉 npm.cmd
为包可执行文件创建符号链接(或Windows 上的垫片)。
设置为 false 使其不这样做。这可以用来解决一些文件系统不支持符号链接的事实,即使在表面上是 Unix 系统上。
fund
- 默认值:
true
- 类型:
Boolean
当“true”在每个结尾处显示消息时,npm install
确认正在寻找资金的依赖项的数量。详情请参阅npm fund
。
dry-run 试运行
- 默认值:
false
- 类型:
Boolean
表示您不希望 npm 进行任何更改并且它应该只报告它会做的事情。这可以被传递到任何修改本地安装,例如,命令的install
,update
, dedupe
,uninstall
,以及pack
和publish
。
注意:这不是由其他网络相关的命令,如兑现dist-tags
, owner
等等。
workspace 工作区
- 默认值:
- 类型:
String
(可多次设置)
允许在当前项目的一配置工作区的上下文中运行命令,同时通过仅运行此配置选项定义的工作区进行过滤。
workspace
配置的有效值为:
- 工作区名称
- 工作区目录的路径
- 父工作区目录的路径(将导致选择所有嵌套工作区)
为该 npm init 命令设置时,可以将其设置为尚不存在的工作区的文件,以创建该文件夹并将其设置为项目中的全新工作区。
此值不会到处到子进程的环境中。
workspaces 工作区
- 默认值:
false
- 类型:
Boolean
启用在所有已配置工作区的上下文中运行命令。
此值不会导出到子进程的环境中。