3

这里https://github.blog/2021-02-02-npm-7-is-now-generally-available/ 说:

lockfile v2 解锁了执行确定性和可重复构建以生成包树的能力。

但我想知道它现在是 npm 7 的默认行为吗?也就是说,如果有一个package-lock.jsonnpm install使用不精确的版本更新最顶层的包,比如^1.0.0frompackage.json或者它总是会以同样的方式工作yarn

如果npm install现在是确定性的,如果我说这npm ci主要相当于

rm -rf node_modules && npm install

有一些额外的检查?

4

1 回答 1

1

简短的回答:

是的!

更长的答案:

如果您有一个package-lock.json或 一个yarn.lock文件,则两者npmyarn分别会产生确定性的结果。

这里需要注意的一点是,使用 yarn.lock 文件的 yarn 只为特定版本的 yarn 生成确定性构建。

给定 yarn.lock 和 Yarn 版本的单一组合,保证 Yarn 安装是确定性的。不同版本的 Yarn 可能会导致磁盘上的树布局不同。

而 npm 的算法即使对于不同版本的 npm 也允许它产生确定性的结果,因为 npm 树构建合同完全由 package-lock.json 文件指定。

您可以在此博客中找到对两者的更详细说明

于 2021-09-17T11:47:13.683 回答