需求
上次去客户公司交接项目源代码时,出现安装依赖后,启动失败的问题,最后找到原因是有一个依赖包更新了大版本,导致两个文件找不到。所以客户要求我们要锁定依赖包的版本号,保证项目在以后的任何时间都正常运行。
解决方案
第一种、使用npm shrinkwrap
命令
使用npm shrinkwrap
命令,生成npm-shrinkwrap.json
文件,这样在执行npm install
时,npm
会首先检查有没有npm-shrinkwrap.json
文件,有的话会根据该文件中依赖包的版本以及resolve
字段下载依赖包,这样就能够保证线上环境与开发环境一致
第二种、使用package.lock.json
文件来控制版本
npm
版本要求:5.0.0以上
npm
5.0以后,在项目中使用npm install
安装之后 ,自动生成package.lock.json
文件,这个文件内容其实与npm-shrinkwrap.json
是一模一样。区别是package.lock.json
在发布时不会上传到npm仓库中.