锁文件解释,每一行到底是啥意思?纱线锁

Posted

技术标签:

【中文标题】锁文件解释,每一行到底是啥意思?纱线锁【英文标题】:Lockfile explanation, what exactly every line mean? yarn.lock锁文件解释,每一行到底是什么意思?纱线锁 【发布时间】:2020-01-27 03:45:01 【问题描述】:

我想知道每一行到底是什么意思? 由于我的项目中的依赖关系,我在使用包时遇到了一些问题。

首先将 nuxt 从 1x 更新到 2x 后,所有测试都开始失败。 经过数小时的网络挖掘后,我注意到我有 2 个版本的

chokidar dependencies

它有不同的手表包版本,所以我锁定了一个包

resolutions 在我的包文件中。

是手表包^2.0.0-beta.7 所有测试都开始工作了!

但不幸的是,开发者模式停止支持热重载... 并开始崩溃。

所以我尝试将 chokidar 锁定到版本 "^3.0.2",现在一切都很好!

但我开始想知道这个文件中的一切是如何工作的 因为在锁定 chokidar 之后,所有问题都消失了!

那条线到底是什么意思?使用哪种chokidar?两个都?第一的?第二? 甚至在这里

有些依赖。的依赖,有 7 个版本!

【问题讨论】:

【参考方案1】:

据我了解(如果我错了,请纠正我),第一行列出了所有依赖项,所以你有例如7 个依赖于某个 chalk 版本的软件包。 第二行列出了 Yarn 选择的要安装的版本,它满足上述条件。示例:Chokidar 的版本为 3.1.1,因为标准规定一个包需要它大于 2.0.2,而一个包需要它大于 3.0.2。由于 3.1.1 满足两者,因此使用它。如果条件之一是“恰好 3.0.2”,则行将被拆分,并且两个版本都将包含在锁定文件中。

第三行是包的 URL,带有一个哈希。 第四个也是一个哈希,用于在运行yarn install时验证下载包时。

如果 Yarn 找不到满足所有依赖项的版本,它会将条目分成组,并获取一个版本来匹配每个组的条件。

至于你的第二个问题:它只使用一个版本的 Chokidar:3.1.1

一般解释见https://yarnpkg.com/lang/en/docs/yarn-lock/

【讨论】:

以上是关于锁文件解释,每一行到底是啥意思?纱线锁的主要内容,如果未能解决你的问题,请参考以下文章

漫话:如何给女朋友解释什么是共享锁和排他锁

GIL(全局解释器锁)与互斥锁

在heroku上部署应用程序时出现过时的纱线锁文件错误

linux shell: 帮我解释下这个makefile每一行的意思嘛

震惊python是个“假的多线程”?!(秒懂GIL全局解释器锁)

冻结的 Python 二进制文件会访问本地解释器和全局解释器锁(GIL)吗?