Corepack
您可能在阅读我们的安装指南时注意到,我们没有告诉您运行 npm install -g yarn
来安装 Yarn - 我们甚至建议不要这样做。原因很简单:就像您的项目依赖项必须锁定一样,包管理器本身也应该锁定。
将 Yarn 安装为全局二进制文件意味着您始终使用已发布的最新版本。大多数时候它都能正常工作,但偶尔会发布一些可能影响项目安装方式的内容 - 无论是 bug 修复、新 bug 还是重大更改。
为了解决这个问题,Yarn 与 Node.js 项目合作,开始开发Corepack,这是一个官方 Node.js 工具,允许您定义希望在每个项目中使用的包管理器版本,就像您的锁定文件对项目依赖项所做的那样。
Corepack 被标记为实验性,以便我们能够更快地对其 CLI 进行迭代,但对于安装包管理器来说,它已经是首选方式 - 适用于 Yarn 和 pnpm。
安装
从 Node.js 14.19 / 16.9 开始,Corepack 随所有官方 Node.js 版本一同发布。不过在实验阶段,它需要手动启用,因此在它生效之前,你需要运行 corepack enable
。
你可以通过运行 yarn exec env
来快速检查 Corepack 是否已启用:如果你得到一个路径作为输出,则 Corepack 已正确安装。如果没有,则可能有某些内容干扰了 shim 的安装方式。在这种情况下,请查看 故障排除 部分以获取建议。
某些第三方发行版可能默认不包含 Corepack,特别是如果你从系统包管理器安装 Node.js 的话。如果发生这种情况,在 corepack enable
之前运行 npm install -g corepack
应该可以解决问题。
故障排除
离线工作流
如果你使用的是气隙网络(通常在公司 CI 中使用),你可能会遇到 Corepack 无法为活动项目下载 Yarn 二进制文件的问题。Corepack 文档包含一个 专门的部分,解释了如何避免此问题。
Volta
Volta 目前不与 Corepack 集成,因为它安装了自己的 shim,从而阻止了 Corepack shim 的应用。你需要运行以下两个命令来强制集成
npm install -g corepack
# Specifying an explicit install-directory makes corepack overwrite volta's yarn shims, which is what we want
corepack enable --install-directory ~/.volta/bin