npm的lock机制

Posted petewell

tags:

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

简述

npm install命令的输入为package.json,输出结果为一个格式化的node_modules树:代表着你定义的项目依赖。在理想情况下,我们希望npm表现的像一个纯函数一样:相同的package.json总是生成相同的node_modules结构树。但是实际上大多数的情况下这是办不到的。以下是导致这种现象的几点原因:

  1. 不同人使用的npm进程版本如果不同,不同npm版本使用的 package.json 解析和安装算法可能有细微差别。
  2. 如果 pacakge.json 中记录的依赖包的版本是一个 semver-range的版本号(即是一个版本范围),那么一旦执行 npm i 就会导致这个包更新到更新的版本。
  3. 就算你依赖了一个固定版本的包,比如A 1.1.1,但是这个1.1.1版本的包依赖了一个B^1.1.2,那么当B包发布了新的版本的时候,重新安装依赖的话B包的版本也会更新。
  4. 如果你用的不是官方的 registry 源,可能私有的源会有版本突变,也会导致不同的人安装到不同的依赖包版本。

参考

  1. 理解NPM5中的lock文档
  2. npm中的package锁
  3. npm语义化版本号

原文:大专栏  npm的lock机制


以上是关于npm的lock机制的主要内容,如果未能解决你的问题,请参考以下文章

lock 语句使用啥类型的锁定机制

Lock+Condition实现机制

显式锁Lock的等待通知机制Condition

android 休眠唤醒机制分析 — wake_lock

python-锁机制

java多线程(死锁,lock接口,等待唤醒机制)