什么是 npm ci

npm cinpm install 类似,主要用于 CICD 等自动化环境中,来确保每次安装的依赖项都是相同的。

npm ci 依赖于 package-lock.jsonnpm-shrinkwrap.json,安装之前会删除 node_modules 文件夹(如果存在),若 package-lock.json 中的依赖与 package.json 不一致 npm ci 将会报错退出。

npm install 区别

处理 package-lock.json

运行 npm ci 必需要 package-lock.jsonnpm-shrinkwrap.json,且不会更新锁文件。在安装时会完全按照 lock 文件版本,若与 package.json 中的版本不匹配则报错。

删除 node_modules

npm ci 开始安装之前会移除 node_modules(若存在)

安装依赖

npm ci 只能一次安装整个项目,不支持安装单个依赖。如果你的 package-lock.json 是使用 --legacy-peer-deps 或其他影响依赖结构的,在 ci 时也需要加上。