提问者:小点点

为什么是我的纱线。在包中增加版本后运行Thread install时锁定文件更改。json?


我已经阅读了有关纱线命令和纱线的文档。锁,我被引导相信,整个点的纱线。锁定文件将使用该文件中指定的版本。

我好奇的是:什么时候是纱线中指定的版本。实际使用的锁?我在包中手动更改了包的版本。json,并重新运行纱线安装,以及纱线。锁文件已更新为使用新版本。我认为它会被锁定,所以不管包中指定了什么新版本。json,只要是纱线。lock为该包指定了一个版本,它将使用该旧版本。

如果这就是yarn.lock的工作方式,那么为什么不在package.json中指定精确版本,而不是在版本号前面使用~或^。现在我必须这样做,以不改变yarn.lock文件时运行yarn安装无论如何。

那么什么时候才是真正使用锁定版本/这才是正确的使用方式yarn.lock?


共1个答案

匿名用户

如果更改package.json中的依赖项版本,锁文件将被更新以反映这一点。锁文件的目的是双重的。第一,允许您(和您的同行)使用您知道可以工作并经过测试的依赖版本。第二,让依赖项作者指定要使用的依赖项的依赖项的版本。这里的目标是稳定。

如果你想到处玩,看看锁文件的用途,创建一个你自己的npm模块,并用v1.0.0将其推送到npm注册表。然后在您的项目中,添加这个模块作为依赖项,类似于"myMoules":"1. x. x"。如果你现在安装你的模块,你会有“myModulev1.0.0”,你的锁文件会反映这一点。

现在将模块更新为v1。1.0,然后再次安装您的模块。此时,如果没有锁文件,您将获得“myModule v1.1.0”。,但由于锁文件类似于依赖关系树的快照,因此您将坚持使用“myModule v1.0.0”。当然,如果删除锁文件,将生成一个新的锁文件,其中包含“mymodulev1.1.0”。同样,更新您的包。json还将更新锁文件。

  • 注意,我给出的例子是npm,而不是纱线,但概念是相同的