1. package-lock.json 是什么?

在多人协作开发的时候,我们虽然有packages.json文件,可以帮助我们统一管理第三方库,但也会存在特殊情况。

问题:小A新建项目 使用了jquery (npm i jquery )最新的版本(@3.3.0),第二天领导让小B参加帮助小A一起开发。当小B 克隆下来项目后 执行npm install 但是jq的作者昨晚更新的一个小版本(@3.3.1),由于作者粗心然后这两个版本不兼容。小B无法运行项目。

解决:npm@5.x.x以后 在安装库的时候会自动生成package-lock.json文件
(可以从.npmrc设置package-lock = false,取消但并不建议你这么做)
package-lock.json文件就是解决上面遇到的问题,它可以帮助我们统一版本,所以git提交的时候请不要忽略它
官方的话:将其作为捕获在任意时刻安装的确切依赖树的机制。
每个人都为项目的特定版本获取依赖项以得到同一棵依赖树。(有package-lock.json文件大家安装的依赖树都是一样的,node_modules大小,文件数都是相同的)
注意: 请不要手动修改package-lock.json或package.json文件,否则npm无法保证依赖树是最新的
image.png

2. package-lock.json中有哪些东西

  1. {
  2. "name": "admin", // 当前项目名称
  3. "version": "1.0.0", // 当前版本号
  4. "lockfileVersion": 1, // *锁定文件版本
  5. "requires": true, //
  6. "dependencies": {
  7. "element-ui": { // 包名
  8. "version": "2.13.2",
  9. "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.2.tgz",
  10. "integrity": "sha512-r761DRPssMPKDiJZWFlG+4e4vr0cRG/atKr3Eqr8Xi0tQMNbtmYU1QXvFnKiFPFFGkgJ6zS6ASkG+sellcoHlQ==",
  11. "requires": { // element-ui 又依赖了哪些包
  12. "async-validator": "~1.8.1",
  13. "babel-helper-vue-jsx-merge-props": "^2.0.0",
  14. "deepmerge": "^1.2.0",
  15. "normalize-wheel": "^1.0.1",
  16. "resize-observer-polyfill": "^1.5.0",
  17. "throttle-debounce": "^1.0.1"
  18. }
  19. },
  20. }
  21. }