目录
npm-ci
选择 CLI 版本
目录
概要
npm cialiases: clean-install, ic, install-clean, isntall-clean
描述
此命令类似于 npm install
,但它旨在用于自动化环境,例如测试平台、持续集成和部署 - 或者任何您希望确保干净安装依赖项的情况。
使用 npm install
和 npm ci
之间的主要区别在于
- 该项目必须具有现有的
package-lock.json
或npm-shrinkwrap.json
。 - 如果包锁定中的依赖项与
package.json
中的依赖项不匹配,npm ci
将退出并显示错误,而不是更新包锁定。 npm ci
只能一次安装整个项目:无法使用此命令添加单个依赖项。- 如果已经存在
node_modules
,则在npm ci
开始安装之前,它将被自动删除。 - 它永远不会写入
package.json
或任何包锁定:安装基本上是冻结的。
注意:如果您通过运行 npm install
来创建您的 package-lock.json
文件,并使用可以影响您的依赖项树形状的标志,例如 --legacy-peer-deps
或 --install-links
,那么您必须向 npm ci
提供相同的标志,否则您可能会遇到错误。一种简单的方法是运行例如 npm config set legacy-peer-deps=true --location=project
并将 .npmrc
文件提交到您的仓库。
示例
确保您拥有包锁定和最新的安装
$ cd ./my/npm/project$ npm installadded 154 packages in 10s$ ls | grep package-lock
在该项目中运行 npm ci
$ npm ciadded 154 packages in 5s
配置 Travis CI 使用 npm ci
而不是 npm install
构建
# .travis.ymlinstall:- npm ci# keep the npm cache around to speed up installscache:directories:- "$HOME/.npm"
配置
install-strategy
- 默认值:"hoisted"
- 类型:"hoisted"、"nested"、"shallow" 或 "linked"
设置在 node_modules 中安装包的策略。hoisted(默认):在顶层安装非重复的,并在目录结构中根据需要安装重复的。nested:(以前是 --legacy-bundling)就地安装,不提升。shallow:(以前是 --global-style)仅在顶层安装直接依赖项。linked:(实验性)安装在 node_modules/.store 中,就地链接,不提升。
legacy-bundling
- 默认值:false
- 类型:布尔值
- 已弃用:此选项已被
--install-strategy=nested
取代
在 node_modules
中提升包安装而不是,以与依赖它们的相同方式安装包。这可能会导致非常深的目录结构和重复的包安装,因为没有去重。设置 --install-strategy=nested
。
global-style
- 默认值:false
- 类型:布尔值
- 已弃用:此选项已被
--install-strategy=shallow
取代
仅在顶层 node_modules
中安装直接依赖项,但在更深层次的依赖项上提升。设置 --install-strategy=shallow
。
omit
- 默认值:如果
NODE_ENV
环境变量设置为“production”,则为“dev”,否则为空。 - 类型:"dev"、"optional" 或 "peer"(可以设置多次)
从磁盘上的安装树中省略的依赖项类型。
请注意,这些依赖项仍然被解析并添加到 package-lock.json
或 npm-shrinkwrap.json
文件中。它们只是没有在磁盘上实际安装。
如果包类型同时出现在 --include
和 --omit
列表中,那么它将被包含。
如果最终省略列表包含 'dev'
,那么 NODE_ENV
环境变量将被设置为 'production'
用于所有生命周期脚本。
include
- 默认值
- 类型:"prod"、"dev"、"optional" 或 "peer"(可以设置多次)
允许定义要安装的依赖项类型的选项。
这是 --omit=<type>
的反面。
在 --include
中指定的依赖项类型不会被省略,而不管在命令行上省略/包含的顺序如何。
strict-peer-deps
- 默认值:false
- 类型:布尔值
如果设置为 true
,并且 --legacy-peer-deps
未设置,那么任何冲突的 peerDependencies
将被视为安装失败,即使 npm 可以根据非对等依赖关系合理地推测出适当的解决方案。
默认情况下,依赖关系图中深度冲突的 peerDependencies
将使用最近的非对等依赖关系规范来解析,即使这样做会导致某些包接收超出其包 peerDependencies
对象中设置的范围的对等依赖关系。
当执行此类覆盖时,将打印一条警告,解释冲突以及涉及的包。如果设置了 --strict-peer-deps
,则此警告将被视为错误。
foreground-scripts
- 默认值:
false
,除非使用npm pack
或npm publish
,在这种情况下,默认值为true
- 类型:布尔值
在前景进程中运行已安装包的所有构建脚本(即 preinstall
、install
和 postinstall
)脚本,与主 npm 进程共享标准输入、输出和错误。
请注意,这通常会使安装速度变慢,并且噪音更大,但对于调试很有用。
ignore-scripts
- 默认值:false
- 类型:布尔值
如果为 true,npm 不会运行 package.json 文件中指定的脚本。
请注意,明确用于运行特定脚本的命令,例如 npm start
、npm stop
、npm restart
、npm test
和 npm run-script
仍将在 ignore-scripts
设置的情况下运行其预期脚本,但它们不会运行任何预脚本或后脚本。
audit
- 默认值:true
- 类型:布尔值
当“true”时,将审计报告与当前的 npm 命令一起提交到默认注册表和为范围配置的所有注册表。有关提交内容的详细信息,请参阅 npm audit
文档。
bin-links
- 默认值:true
- 类型:布尔值
告诉 npm 为包可执行文件创建符号链接(或 Windows 上的 .cmd
shim)。
设置为 false 以使其不执行此操作。这可用于解决某些文件系统不支持符号链接的事实,即使在表面上是 Unix 系统上也是如此。
fund
- 默认值:true
- 类型:布尔值
当“true”时,在每个 npm install
结束时显示一条消息,确认正在寻找资金的依赖项数量。有关详细信息,请参阅 npm fund
。
dry-run
- 默认值:false
- 类型:布尔值
表示您不希望 npm 进行任何更改,并且它只应报告它将执行的操作。这可以传递到任何修改本地安装的命令,例如 install
、update
、dedupe
、uninstall
,以及 pack
和 publish
。
注意:其他网络相关命令(例如 dist-tags
、owner
等)不遵守此规则。
workspace
- 默认值
- 类型:字符串(可以设置多次)
在当前项目的配置工作空间的上下文中启用运行命令,同时通过仅运行此配置选项定义的工作空间进行过滤。
workspace
配置的有效值为
- 工作空间名称
- 工作空间目录的路径
- 父工作空间目录的路径(将导致选择该文件夹中的所有工作空间)
当为 npm init
命令设置时,这可以设置为尚未存在的工作空间的文件夹,以创建文件夹并将其设置为项目中的一个全新工作空间。
此值不会导出到子进程的环境中。
workspaces
- 默认值:null
- 类型:null 或布尔值
设置为 true 以在 **所有** 配置的工作空间的上下文中运行命令。
显式地将此设置为 false 将导致诸如 install
之类的命令完全忽略工作空间。当未显式设置时
- 在
node_modules
树上操作的命令(install、update 等)会将工作空间链接到node_modules
文件夹中。 - 执行其他操作的命令(test、exec、publish 等)将在根项目上运行, *除非*workspace
配置中指定了一个或多个工作空间。
此值不会导出到子进程的环境中。
include-workspace-root
- 默认值:false
- 类型:布尔值
在为命令启用工作空间时包含工作空间根目录。
当为 false 时,通过 workspace
配置指定单个工作空间,或通过 workspaces
标志指定所有工作空间,会导致 npm 仅在指定的工作空间上运行,而不是在根项目上运行。
此值不会导出到子进程的环境中。
install-links
- 默认值:false
- 类型:布尔值
当设置时,file: 协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作空间没有影响。