JeB*_*JeB 6 node.js npm yarnpkg
自 NPM v7 以来,官方文档声明了以下内容npm install(强调我的):
此命令安装一个包及其依赖的任何包。如果包有包锁、npm Shrinkwrap 文件或纱线锁文件,则依赖项的安装将由该文件驱动
我试图找到更多关于npm install当下行为的信息yarn.lock,但没有找到太多。这篇博文指出:
通过新
package-lock.json文件,我们将解锁执行确定性可重现构建的能力。它现在应该包含 npm 安装所需软件包所需的所有内容。之前 npm 7yarn.lock被 npm 忽略,但现在不再是这样了。现在,它可以使用它来使自己保持最新的包树。
GitHub博客:
在之前的版本中,yarn.lock 文件被忽略,npm CLI 现在可以使用yarn.lock 作为包元数据和解析指南的来源。如果
yarn.lock文件存在,那么 npm 也会使其与包树的内容保持最新。
但他们都没有清楚地说明我运行时实际发生的npm install情况yarn.lock。
我想了解一下它:
yarn来生成yarn.lock和重现 CI 上的包树吗npm install?npm install当我运行时到底会发生什么yarn.lock?它会更新吗?它可以用(某种)运行吗--frozen-lockfile?该命令根本npm ci没有提及。yarn.lockv1吗berry?小智 6
\n\n我可以在本地运行yarn来生成yarn.lock并使用npm install在CI上重现包树吗?
\n
不,package-lock.json如果您想使用 npm v7 重现包树,您仍然需要一个文件。v7 仅使用yarn.lock 文件作为包元数据和解析指南的来源。
这是因为 npm v7 使用新的lockFileVersion: 2(向后兼容)生成锁定文件,以提高性能并允许具有确定性树形状的可重复构建;它还尝试减少从package.json文件中读取元数据。
\n\n当我使用yarn.lock运行npm install时到底会发生什么?它会更新吗?它可以与(某种)--frozen-lockfile 一起运行吗?npm ci 命令根本没有提到yarn.lock。
\n
是的,该yarn.lock文件将被更新,并且 npm 仍将创建一个package-lock.json文件,并且如果package-lock.json存在文件,则它\xe2\x80\x99 将用作要创建的树形状的权威定义。
根据这篇 NPM 博客文章,他们还不支持yarn.lock 文件的原因是
\n\n\n一旦我们宣布 npm v7 将包含对yarn.lock 文件的支持,我们 \xe2\x80\x99 现在已经多次遇到的一个常见问题是 \xe2\x80\x9c 那么为什么要保留 package-lock.json 呢?为什么不只使用yarn.lock?\xe2\x80\x9d
\n
\n\n简单的答案是:因为yarn.lock并没有\xe2\x80\x99s完全满足npm\xe2\x80\x99s的需求,并且完全依赖它会限制我们将来生成最佳包安装或添加功能的能力。
\n
最后,
\n\n\n它同时支持 v1 和 berry 吗?
\n
这尚不清楚,并且暗示要更改,因为berry纱线使用文件和纱线版本的组合yarn.lock来保证确定性分辨率。
我建议阅读这篇博文以及上面来自npm的文章,以获得更深入的解释。
\n\n| 归档时间: |
|
| 查看次数: |
9706 次 |
| 最近记录: |