yarn - 快速检查 `package.json` 和 `yarn.lock` 要求是不是满足的正确方法?

Posted

技术标签:

【中文标题】yarn - 快速检查 `package.json` 和 `yarn.lock` 要求是不是满足的正确方法?【英文标题】:yarn - Proper way to quickly check if `package.json` and `yarn.lock` requirements are satisfied?yarn - 快速检查 `package.json` 和 `yarn.lock` 要求是否满足的正确方法? 【发布时间】:2021-04-28 05:35:43 【问题描述】:

我想验证是否满足我项目中的所有依赖项(package.jsonyarn.lock)而无需运行 yarn install(它会构建整个依赖项树并发出网络请求)

起初,我非常希望yarn check 做到这一点。以下命令验证 package.json 中是否满足每个依赖项验证安装的包与 yarn.lock 文件匹配。

yarn check --integrity --verify-tree

但是,the documentation 表示自 yarn v2 起已弃用,应改为使用 yarn install --check-files

但是the documentation for --check-files 让它看起来好像做了一些完全不同的事情。

yarn install --check-files

验证 node_modules 中已安装的文件没有被删除。

我还可以验证运行它本质上是运行完整的yarn install 命令,所以它在这里没有用。

此外,pull request that removed yarn check 还提到 --check-files 的行为并不完全直观。

那么在 yarn v2 及更高版本中运行此检查的受支持方式是什么? 有什么方法可以对 package.jsonyarn.lock 进行轻量级检查,而无需构建整个依赖项像yarn install 这样的网络树?

FWIW,a similar question was asked for npm,解决方案是使用 --dry-run 标志,但 yarn 中似乎不存在该标志。

【问题讨论】:

【参考方案1】:

您提到npm--dry-run 标志可以满足您在yarn 中寻找的功能。 Starting with npm@7.0.0, npm parses and uses yarn.lock files 如果它们存在(并且没有 package-lock.json)。

因此您可以将npm--dry-run 选项一起使用,它应该与yarn.lock 文件一起使用。

确保您使用的是npm 7.0.0 或更高版本。更新:npm install -g npm

【讨论】:

【参考方案2】:

yarn cli 中有几个选项可能使您能够实现您想做的事情。

我最好的猜测是使用offline mode 来停止您要求的任何外部请求。 frozen lockfile 还为您提供了在依赖项彼此不同步的情况下出错的选项。

据我了解,您提到的check files 选项本身并不是您的情况所需要的,因为您不想检查node_modules-文件夹而不是package.json 和@987654328 @。

那么yarn install --offline --frozen-lockfile呢?

祝好,希望对你有所帮助

【讨论】:

非常感谢! --offline 功能在该文档中没有太多解释,但更好地解释 here。但是,它看起来像维护一个单独的缓存文件夹。这并不理想,我认为仍然有一种更简单的方法来检查安装。但这是一件值得调查的好事情。

以上是关于yarn - 快速检查 `package.json` 和 `yarn.lock` 要求是不是满足的正确方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何将`yarn.lock`与`package.json`同步?

package.json、package-lock.json 和 yarn.lock 文件的区别?

关于package.json package-lock.json 和 yarn.lock 的安装问题

关于package.json package-lock.json 和 yarn.lock 的安装问题

与 npm 和 yarn 一起使用的 package.json 脚本?

使用 Git 和 Yarn Package.json 脚本