一、背景
不知道大家平时在开发中有没有注意到,你的项目中有两个文件:
-
package.json
-
package-lock.json
平时都不怎么关注这两个文件有什么关系,记录一下。
在package.json
中,vue
的版本^2.6.14。
"vue": "^2.6.14",
- "^"的意思是,假如过几天Vue在大版本 2下更新了小版本
2.6.15
,那么当你npm install
时Vue会自动升级为2.6.15
二、 引起的问题
比如现在有程序员A、程序员B
两个开发者
-
程序员A:接手项目时Vue的版本是
2.6.14
,并一直使用这个版本 -
程序员B:一个月后加入这个项目,这时Vue已经升级到
2.9.14
了,npm install
的时候会自动升级
总结:这会导致两个人开发时的Vue版本不同,从而会导致合作开发产生一些问题,以及错误。
三、package-lock.json
package-lock.json
可以解决以上的问题,他的作用就是:锁定安装模块的版本号
比如现在有程序员A、程序员B
两个开发者
-
程序员A:接手项目时Vue的版本是
2.6.14
,此版本被锁在了package-lock.json
-
程序员B:一个月后加入这个项目,这时Vue已经升级到
2.9.14
,npm install
的时候,按理说会自动升级,但是由于package-lock.json
中锁着2.6.14
这个版本,所以阻止了自动升级,保证版本还是2.6.14
四、补充
1.在运行项目的时候常会遇到莫名其妙的报错问题,这个时候逼不得已会执行删除package-lock.json和node_modules然后npm cache clean --force清理缓存,npm i 重新安装依赖的操作,package-lock.json会根据package.json生成新的,它们之间存在依赖的关系。
2.程序员B
删除packge-lock.json后 npm i,Vue可能会自动升级,这个不用担心,Vue会自动向下兼容程序员A
的低版本Vue。