自NPM v7以来,官方文档对npm install (强调文档)作了如下说明:
此命令安装包和它所依赖的任何包。如果包有包锁,或npm收缩包文件,或纱锁文件,则依赖项的安装将由该文件驱动。
我试图在npm install中找到更多关于yarn.lock行为的信息,但没有找到多少信息。这博客文章指出:
使用新的
package-lock.json文件,我们将解锁完成决定性的可复制构建的能力。现在,它应该包括npm安装所需软件包所需的一切。在npm 7之前,yarn.lock被npm忽视了,但现在已经不是这样了。现在,它可以使用它来更新包树。
GitHub 博客
在以前的版本中,yarn.lock文件被忽略,npm现在可以使用yarn.lock作为包元数据和解析指导的来源。如果存在一个
yarn.lock文件,那么npm也将使它与包树的内容保持最新。
但是,它们都没有清楚地描述我在使用npm install运行yarn.lock时实际发生了什么。
我想了解一下:
yarn来生成yarn.lock并使用npm install在CI上再现包树吗?npm install运行yarn.lock时,会发生什么?有更新吗?它能与(某种程度上) --frozen-lockfile一起运行吗?npm ci命令根本没有提到yarn.lock。v1和berry吗?发布于 2022-07-17 12:02:44
我是否可以在本地运行纱线以生成yarn.lock,并在CI上通过npm安装复制包装树?
不,如果要使用npm package-lock.json再现包树,仍然需要一个v7文件。v7只使用yarn.lock文件作为包元数据和解析指南的源。
这是因为npm v7使用新的lockFileVersion: 2 (向后兼容)生成锁文件,以提高性能并允许具有确定性树形的可重复构建;它还试图减少对元数据的package.json文件的读取。
当我使用yarn.lock运行npm安装时,会发生什么?有更新吗?它能用(某种程度上)--冻结-锁文件运行吗?npm命令根本没有提到yarn.lock。
是的,yarn.lock文件将被更新,npm仍将创建一个package-lock.json文件,如果存在package-lock.json文件,它将用作要创建的树形状的权威定义。
按照这篇NPM博客文章的说法,他们不支持yarn.lock文件的原因是
当我们宣布npm v7将包括对yarn.lock文件的支持时,我们现在得到的一个常见问题是:“那么,为什么要保留package-lock.json呢?”为什么不只使用yarn.lock呢?“简单的答案是:因为yarn.lock没有完全满足npm的需求,而完全依赖它将限制我们在未来产生最佳包安装或添加特性的能力。
最后,
它既支持v1也支持浆果吗?
这是不清楚的,并暗示改变的berry,因为纱线使用yarn.lock文件和纱线版本的组合,以确保确定的分辨率。
发布于 2022-07-16 15:05:38
既然您已经做了这么多的研究,而且进一步的文档搜索似乎无法缓解您的不确定性,那么为什么不采取今后的步骤来查看源代码呢?不要害怕读代码
所以,我对回购https://github.com/npm/cli做了个肤浅的搜索,发现这个文件可以回答你的问题。
为了外卖,
我是否可以在本地运行
yarn来生成yarn.lock,并在CI上使用npm安装再现包树?
是的,除非您使用的一些协议只属于berry,不受npm的支持。
当我使用yarn.lock运行npm安装时,会发生什么?有更新吗?它能用(某种程度上)--冻结-锁文件运行吗?npm命令根本没有提到yarn.lock。
npm i时,yarn.lock将得到更新。至少它会进行一些格式化更改,并覆盖注册表URL。如果npm无法找到已解析的包版本或已解析版本无效,它将从注册表中获取该版本,并在package-lock.json和yarn.lock中进行更新。npm ci需要package-lock.json,否则它会立即退出它既支持v1也支持浆果吗?
它对berry不起作用。npm将用纱线锁文件v1的格式覆盖yarn.lock。
发布于 2022-07-17 07:04:38
这个链接解释了一些关于纱线和npm交互的想法,即您从npm切换到纱线,所以有点相反,但比较命令(CI)列表可能很有趣:https://classic.yarnpkg.com/lang/en/docs/migrating-from-npm/。
除了Yarn之外,我不太了解它的不同之处,只是安装得更快,而且包的构建有点不同。找不到医生解释为什么要转到国家预防机制。启动npm之前删除yarn.lock。否则,见上面的答案。
https://stackoverflow.com/questions/72853529
复制相似问题