美文网首页
package-locks 机制简述

package-locks 机制简述

作者: 唯泥Bernie | 来源:发表于2019-07-30 18:20 被阅读0次

问题

假设我们安装 eslint:

npm install --save-dev eslint

安装完后,在 package.json 里面生成如下模块版本:

{
  "devDependencies": {
    "eslint": "^5.13.0"
  }
}

然后你把 package.json 提交到代码库。过了一段时间,有新人加入到项目里面。他克隆出了代码,然后本地安装依赖包 npm install。在他安装的时候 eslint 已经发布了新的版本5.16.0。那么新人本地安装的 eslint 版本就会变成5.16.0。这个机制意味着同一份 package.json 在不同时间安装出来的依赖包有可能不一样。可能造成的后果就是依赖不一致程序不 work(一种环境不一致导致的问题)。

解决方案

那么你说我把 package.json 里面的版本写死不就可以了吗?虽然这样,你项目的直接依赖版本固定了,但是你不能保证你安装的包自己也写死它的依赖,也就是说 eslint 模块依赖的包可能会随着时间升级。为了解决这个问题出现了 package-lock.json。当你 npm install 的时候,同时会生成一个 package-lock.json,这个文件记录了你运行 npm install 命令那一个时刻的模块依赖树(就是你安装的所有包的版本等信息)。当你把这个文件提交到代码库之后,其他人在其他时间克隆出代码再 npm install 的时候,npm 会看到有 package-lock.json 文件,那么就会按照其描述的依赖树安装包。也就是说通过这一个机制保证同一份 package.json 在不同时间安装出的包依赖树是一致的。

但是我要更新我依赖的包呢?当你使用 npm update 更新现有包,或者 npm install 安装新包后,如果改变了 package.json 那么 npm 同时会更新 package-lock.json。使 package.json 和 package-lock.json 保持某一时刻的一致。

历史

以上是现有 npm-v6.10.2 的机制,但是这个机制也是经过演化,一开始出来 package-lock.json 的时候,其行为并不完全按上面的机制运行,具体历史可以看这个贴子:https://www.zhihu.com/question/62331583/answer/275248129

参考文献

  1. 官方文档

相关文章

  • package-locks 机制简述

    问题 假设我们安装 eslint: 安装完后,在 package.json 里面生成如下模块版本: 然后你把 pa...

  • Java面试题

    简述synchronized?Object;Monitor机制;简述happen-before规则;JUC和Obj...

  • Handler机制简述

    Loop.prepare 1.创建Loop对象 2.创建MessageQueue对象 3.loop绑定当前线程,通...

  • Kafka的ack机制

    简述kafka的ack机制 Kafka的ack机制,指的是producer的消息发送确认机制,这直接影响到Kafk...

  • Java代码编译和执行的整个过程

    一、简述 Java代码编译和执行的整个过程包含了三个重要的机制:①Java源码编译机制;②类加载机制;③类执行机制...

  • Android安全机制简述

    Android 系统组件及其作用 1.Zygote:Android应用的孵化器,一切Android程序由此进程fo...

  • Widget试用机制简述

    目的: 1.优化购买体验,允许用户先试用再购买 2.提升付费Widget的下载量 技术实现关键点: 1.两个关键标...

  • 类加载机制简述

    类加载过程 加载---》连接(验证,准备,解析)---》初始化。从 class 文件到内存中的类,按先后顺序需要经...

  • 深入理解JavaScript的面向对象机制和原型链

    〇、前言 一、JavaScript和Java在面向对象机制上的区别1、面向对象编程的特征2、机制差异简述 二、面向...

  • Android消息机制简述(Java层)

    1、简述 android中的消息驱动机制,主要是用于线程之间的数据交互; 消息机制涉及对象:Handler : 消...

网友评论

      本文标题:package-locks 机制简述

      本文链接:https://www.haomeiwen.com/subject/ugcorctx.html