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

Posted 天天向上吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了package.json与package-lock.json的区别相关的知识,希望对你有一定的参考价值。

  1. 使用npm5之前的版本,是不会生成package-lock.json这个文件的。
  2. npm5以后,包括npm5这个版本,才会生成package-lock.json文件
  3. 当使用npm安装包的时候,npm都会生成或者更新package-lock.json文件
    • npm5以后的版本,在安装包的时候,不需要加 --save(-s) 参数,也会自动在package.json中保存依赖项
    • 当安装包的时候,会自动创建或者更新package-lock.json文件
    • package-lock.json文件内保存了 node_modules中所有包的信息,包含这些包的名称、版本号、下载地址。带来好处是,如果重新 npm install 的时候,就无需逐个分析包的依赖项,因此会大大加快安装速度。
    • 从 package-lock.json 文件名来看,lock代表的是“锁定”的意思。它用来锁定当前开发使用的版本号,防止npm install的时候自动更新到了更新版本。因为新版本有可能会更新老的api,导致之前的代码出错。
    • 原来的 package.json 文件只能锁定大版本,也就是版本号的第一位,并不能锁定后面的小版本,你每次npm install都是拉取的该大版本下的最新的版本,为了稳定性考虑我们几乎是不敢随意升级依赖包的,这将导致多出来很多工作量,测试/适配等,所以package-lock.json文件出来了,当你每次安装一个依赖的时候就锁定在你安装的这个版本。

以上是关于package.json与package-lock.json的区别的主要内容,如果未能解决你的问题,请参考以下文章

Yarn Workspaces 和 Browserify - 子文件夹中的 package.json 会破坏构建

npm WARN saveError EPERM: operation not allowed, rename 'C:\...\package.json.3542172463' -> 'C:\.

Error:npm WARN enoent ENOENT: no such file or directory, open ‘C:UsersXXpackage.json‘son‘

package.json 与 package-lock.json 的关系

无法为 Electron 构建 .exe

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