使用npm ci是比npm install更好的在CI中安装依赖的子命令。

此命令类似于npm install,不同之处在于它旨在用于自动化环境,例如测试平台、持续集成和部署 —— 或者任何你希望确保对依赖项进行全新安装的情况。

npm ci 在以下情况下会明显更快:

  • 有一个package-lock.jsonnpm-shrinkwrap.json文件。
  • node_modules文件夹丢失或为空。

简而言之,使用npm installnpm ci之间的主要区别是:

  • 该项目必须具有现有的package-lock.jsonnpm-shrinkwrap.json.
  • 如果package-lock.json中的依赖项与package.json中的不匹配, npm ci将退出并显示错误,而不是更新package-lock.json
  • npm ci 只能一次性安装整个项目,无法使用此命令添加单个依赖项。
  • 如果node_modules已经存在,它将在npm ci开始安装之前自动删除。
  • 它永远不会写入package.json或任何包锁:安装基本上是冻结的。