我们在多人协同开发时偶尔会遇见执行完 npm i 命令后在启动环境时发现依赖报错,但明明同样的代码在其他小伙伴的环境下却能正常运行,这很有可能是某个npm包功能版本更新(或是破坏了原本一些功能的更新)导致的报错
那么我们如何做,才能保证package版本的一致性?
一、用法
将 npm i 替换成 npm ci 后即可成功解决
注意:项目中必须有一个 package-lock.json 或 npm-shrinkwrap.json
npm 版本要 >=5.7
二、两者区别
1、npm i 依赖 package.json,而 npm ci 依赖 package-lock.json
2、npm ci 是安装整个依赖,无法单独安装某个依赖
3、npm ci 会删除已有的 node_modules 文件夹,不会去校验已下载文件版本与控制版本的关系,也不用校验是否存在最新版本的库,因此下载速度更快
4、当 package-lock.json 中的依赖与 package.json 不一致时,npm ci 退出但不会修改 package-lock.json