📜  Node.js 中 npm i 和 npm ci 的区别(1)

📅  最后修改于: 2023-12-03 14:44:41.791000             🧑  作者: Mango

Node.js 中 npm i 和 npm ci 的区别

在 Node.js 项目中,我们常常使用 npm(Node Package Manager) 来管理项目的依赖关系。当然,npm 不只是用于安装依赖,还有其他一些强大的功能。在这篇文章中,我们将重点讨论 npm 的两个常用命令,即 npm inpm ci

npm i

npm inpm install 的简写形式,用于安装项目的依赖。执行 npm i 命令时,npm 会根据项目中的 package.json 文件中的依赖配置,将所有依赖包下载到 node_modules 文件夹中。

示例:

npm i package-name

这个命令会安装名为 package-name 的依赖包,如果没有指定版本,默认会安装最新的稳定版本。同时,npm 还会将依赖信息写入 package-lock.json 文件,以保证项目可以复现性安装相同的依赖。

npm ci

npm cinpm clean-install 的简写形式,用于在干净的环境中进行依赖的安装。与 npm i 不同,npm ci 命令主要用于 CI/CD(持续集成/持续部署)环境,如自动化构建等场景。

示例:

npm ci

执行 npm ci 命令时,npm 会先删除现有的 node_modules 文件夹,然后根据项目中的 package-lock.jsonnpm-shrinkwrap.json 文件中的信息进行依赖安装。这确保了每次构建都是从零开始的干净安装,避免了由于依赖缓存导致的不确定性问题。

相比于 npm inpm ci 更加快速和可靠。由于 npm ci 不需要解析 package.json,而是直接使用锁定文件进行安装,所以速度更快。同时,由于每次都是干净安装,所以构建过程也更加可靠,可以避免由于依赖不一致导致的问题。

需要注意的是,由于 npm ci 删除了原有的 node_modules 文件夹,所以在执行该命令前,请确保你已经提交了对 node_modules 文件夹的修改或者将其添加到 .gitignore 文件中,以免意外丢失。

结论

简而言之,npm i 是用于常规的依赖安装,而 npm ci 则更适用于 CI/CD 等环境,在干净的环境中进行快速、可靠的依赖安装。

尽管 npm inpm ci 有一些区别,但它们的目标都是为了帮助我们管理 Node.js 项目的依赖关系,提高开发效率和项目的可维护性。

参考资料: