前端开发时使用npm来对依赖的第三方包进行管理,在开发时使用 npm install --save
安装新的依赖包时,会在package.json文件中自动加上 ^x.x.x
的版本号。
在使用npm install安装环境的依赖时,不同环境会依据 ^x.x.x
去安装不同的最新版本,此时可能存在版本不兼容的问题,导致流程失败。
解决方式:
一: 利用npm的shrinkwrap模块生成 npm-shrinkwrap.json 文件锁定依赖的版本。
二: 利用yarn命令生成的 yarn.lock 文件锁定以来的版本。
两者区别:
一: Yarn 默认会生成这样的锁定文件,而 npm 要通过 shrinkwrap 命令生成 npm-shrinkwrap.json 文件,只有当这个文件存在的时候,packages 版本信息才会被记录和更新。
二: 无论 npm 还是 Yarn 在执行包的安装时,都会执行一系列任务。npm 是按照队列执行每个 package,也就是说必须要等到当前 package 成功安装之后,
才能继续后面的安装。而 Yarn 是同步执行所有任务,提高了性能。
相关链接:
https://docs.npmjs.com/cli/shrinkwrap