Node.js v14.21.1 文档


目录

Corepack 核心包#

中英对照

稳定性: 1 - 实验

Corepack 是一个实验性工具,可帮助您管理包管理器的版本。 它为每个支持的包管理器公开二进制代理,当被调用时,它将识别为当前项目配置的任何包管理器,如果需要,透明地安装它,最后运行它而不需要明确的用户交互。

此特性简化了两个核心工作流程:

  • 它简化了新贡献者的加入,因为他们不必再遵循特定于系统的安装过程,只需拥有您想要的包管理器。

  • 它允许您确保团队中的每个人都将使用您想要的包管理器版本,而无需他们在每次需要进行更新时手动同步它。

工作流程#

启用该特性#

中英对照

由于处于实验状态,目前需要显式地启用 Corepack 才能生效。 要做到这一点,只需运行 corepack enable,它将在您的环境中设置符号链接,在 node 二进制文件旁边(并在必要时覆盖现有的符号链接)。

从现在开始,任何对支持的二进制文件的调用都无需进一步设置即可工作。 如果您遇到问题,只需运行 corepack disable 以从您的系统中删除代理(并考虑在 Corepack 仓库上打开一个问题让我们知道)。

配置包#

中英对照

Corepack 代理将在当前目录层次结构中找到最近的 package.json 文件以提取其 "packageManager" 属性。

如果该值对应于支持的包管理器,则 Corepack 将确保对相关二进制文件的所有调用都针对请求的版本运行,如果需要则按需下载,如果无法成功检索则中止。

升级全局版本#

中英对照

当在现有项目之外运行时(例如运行 yarn init 时),Corepack 将默认使用与每个工具的最新稳定版本大致对应的预定义版本。 这些版本可以通过运行 corepack prepare 命令以及您希望设置的包管理器版本来轻松覆盖:

corepack prepare yarn@x.y.z --activate

离线工作流程#

中英对照

很多生产环境没有网络访问权限。 由于 Corepack 通常直接从其仓库下载包管理器版本,它可能与此类环境发生冲突。 为避免这种情况发生,请在您仍有网络访问权限时调用 corepack prepare 命令(通常在您准备部署映像的同时)。 这将确保即使没有网络访问,所需的包管理器也可用。

prepare 命令有各种标志,有关此事的更多信息,请参阅详细的 Corepack 文档

支持的包管理器#

中英对照

以下二进制文件通过 Corepack 提供:

包管理器二进制名称
Yarnyarn, yarnpkg
pnpmpnpm, pnpx

常见问题#

Corepack 目前如何与 npm 交互?#

中英对照

虽然 Corepack 可以像任何其他包管理器一样轻松支持 npm,但默认情况下当前未启用它的 shim。 这有几个后果:

  • 总是可以在配置为与另一个包管理器一起使用的项目中运行 npm 命令,因为 Corepack 无法拦截它。

  • 虽然 npm"packageManager" 属性中的有效选项,但缺少 shim 将导致使用全局 npm。

运行 npm install -g yarn 不起作用#

中英对照

npm 防止在进行全局安装时意外覆盖 Corepack 二进制文件。 为避免此问题,请考虑以下选项之一:

  • 不要再运行这个命令了;Corepack 将提供包管理器二进制文件,并确保请求的版本始终可用,因此不再需要显式安装包管理器。

  • --force 标志添加到 npm install;这将告诉 npm 可以覆盖二进制文件,但您将在此过程中删除 Corepack 的那些(如果发生这种情况,再次运行 corepack enable 以将它们添加回来)。

返回顶部