[英]Using "npm ci" instead of "npm install" for deterministic project setup
给定一个项目,其中package-lock.json
在源代码控制中进行管理,目标是团队中的所有开发人员都获得完全相同的依赖项。
从 npm 的文档来看,我认为开发人员应该使用npm ci
来设置他们的开发环境,并且可能在以后更新依赖项时也应该使用。
但是,我在典型的 npm 项目中看到的说明仍然是使用npm install
。
开发人员是否有理由使用npm install
而不是npm ci
? npm ci
在这种情况下有缺点吗?
我了解npm ci
确实删除了整个node_modules
,因此可能会重新下载一些已经存在的依赖项。
但是在npm install
,我经常遇到这样的情况,即npm install
实际上是在更改package-lock.json
(请参阅下面的链接),这绝对不是所有开发人员在传统项目设置中所期望的主要目标,相同的环境。
因此我想推荐使用npm ci
。
npm install
的“意外”行为示例:
在本地构建 repo 或更新依赖项时,没有理由使用npm ci
代替npm i
(因为它使用 npm 缓存,它的速度与npm i
大致相同),但是有以下情况npm i
可能优先:
package.json
中的版本进行了手动更改,并希望它们胜过package-lock.json
中的版本。只要您想要一个可重现的环境,就应该使用npm ci
(全新安装)。 你是对的:开发团队大部分时间都应该使用它。
Use npm install
only when they modify the packages or are ready to upgrade dependencies (one of them does it and fixes conflicts; after the commit of package.json
AND package-lock.json
, the others keep doing npm ci
).
请参阅我的回答,解释每种工具的用途。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.