Skip to content

npm ci

合理使用 npm ci 和 npm install 顾名思义,npm ci 就是专门为 CI 环境准备的安装命令,相比 npm install 它的不同之处在于:

  • npm ci 要求项目中必须存在 package-lock.json 或 npm-shrinkwrap.json;
  • npm ci 完全根据 package-lock.json 安装依赖,这可以保证整个开发团队都使用版本完全一致的依赖;
  • 正因为 npm ci 完全根据 package-lock.json 安装依赖,在安装过程中,它不需要计算求解依赖满足问题、构造依赖树,因此安装过程会更加迅速;
  • npm ci 在执行安装时,会先删除项目中现有的 node_modules,然后全新安装;
  • npm ci 只能一次安装整个项目所有依赖包,无法安装单个依赖包;
  • 如果 package-lock.json 和 package.json 冲突,那么 npm ci 会直接报错,并非更新 lockfiles;
  • npm ci 永远不会改变 package.json 和 package-lock.json。

基于以上特性,我们在 CI 环境使用 npm ci 代替 npm install,一般会获得更加稳定、一致和迅速的安装体验