给定一个在源代码管理中管理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的“意外”行为示例
发布于 2022-07-01 16:56:40
在本地构建回购或更新依赖项时,没有理由使用npm ci而不是npm i (因为它使用npm缓存,它的速度与npm i大致相同),但在以下情况下,npm i可能是首选的:
package.json中的版本进行了手动更改,并希望它们优于package-lock.json中的版本。发布于 2022-08-21 11:13:21
当您想要一个可复制的环境时,您应该使用npm ci (干净安装)。你说得对:开发团队大部分时间都应该使用它。
只有当它们修改包或准备升级依赖项时才使用npm install (其中之一这样做并修复冲突;在提交package.json和package-lock.json之后,其他人继续执行npm ci)。
请参阅my answer解释每个工具的使用情况。
https://stackoverflow.com/questions/53469032
复制相似问题