Appearance
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,一般会获得更加稳定、一致和迅速的安装体验