package.json 和 package-lock.json的区别

生成方式

  1. package.json 是通过命令 npm init 生成的
  2. package-lock.json 是下载任何的依赖包(npm install XXX)都会生成

历史

之前npm包管理工具是没使用package-lock.json,是从 node@5 之后才开始存在的。那么,为什么要增加pack-lock.json呢?

原因

npm包管理工具都是通过 package.json 中对各个依赖包的描述去下载对应的依赖包的。但package.json 只能规定大版本号。这样就会导致每个时期下载的依赖包都是不一样的,很容易出现兼容性等各种问题。例如:

"dependencies": {
    "element-plus": "^1.1.0-beta.5",
    "vue": "^3.2.6"
  }

里面的“^”表示向后兼容,可以下载该大版本下最新的依赖包。所以有可能下一次下载到的版本号是8.1.0
所以package-lock.json 就是为了解决这个问题,规定了具体每个依赖包的版本号和对应的下载路径。保证我们下次在重新使用“npm install”下载时,能跟上次一模一样。下面是package-lock.json中的部分源码:

"vue": {
      "version": "3.2.6",   
      "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.6.tgz",   //下载路径
      "integrity": "sha512-Zlb3LMemQS3Xxa6xPsecu45bNjr1hxO8Bh5FUmE0Dr6Ot0znZBKiM47rK6O7FTcakxOnvVN+NTXWJF6u8ajpCQ==",   
      "requires": {
        "@vue/compiler-dom": "3.2.6",
        "@vue/runtime-dom": "3.2.6",
        "@vue/shared": "3.2.6"
      }
    }
原文地址:https://www.cnblogs.com/zxn-114477/p/15191044.html