发现个人node项目下面只有一个package-lock.json文件,不存在package.json文件,顺便扒一扒这两个的区别,其实package-lock就是锁定安装时的包版本号,须要上传到git上,以保证其余人在install时候,你们的依赖版本相同。node
官方文档:这个package-lock.json 是在 `npm install`时候生成一份文件,用以记录当前状态下实际安装的各个npm package的具体来源和版本号.git
跟package.json的区别在于(举个栗子):npm
"dependencies": { "@types/node": "^8.0.33", },
这里的^向上尖号是定义向后(新)兼容依赖,若是types/node版本是超过8.0.33,而且是在大版本(8)上相同,就容许下载最新的types/node包。同一个大版本不一样版本号之间存在差别,致使依赖库包行为特征有时候不兼容。json
因此npm最新的版本就开始自动生成package-lock.json功能,目的就是确保全部库包与你上次安装的彻底同样。ide
package.json文件只能锁定大版本,即版本号的第一位,不能锁定后面的小版本,你每次npm install时候拉取的该大版本下面最新的版本,可能有些童鞋以前就踩过相似的坑。ci
通常为了稳定性考虑咱们不能随意升级依赖包,由于若是换包致使兼容性bug出现很难排查,因此package-lock.json就是来解决包锁定不升级问题的。文档
若是要升级package-lock.json里面的库包,怎么操做呢?it
npm install XXX@x.x.x class