Node.js v18.18.2 文档


目录

核心包#

稳定性:1 - 实验性

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

此功能简化了两个核心工作流程:

  • 它简化了新贡献者的入职流程,因为他们不再需要遵循特定于系统的安装过程来获得您想要的包管理器。

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

工作流程#

启用该功能#

由于其实验状态,Corepack 目前需要明确启用才能产生任何效果。为此,请运行corepack enable ,这将在您的环境中的node二进制文件旁边设置符号链接(并在必要时覆盖现有符号链接)。

从此时起,对支持的二进制文件的任何调用都将无需进一步设置即可运行。如果您遇到问题,请运行 corepack disable从系统中删除代理(并考虑在Corepack 存储库上提出问题来告知我们)。

配置包#

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

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

升级全球版本#

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

corepack prepare [email protected] --activate 

或者,可以使用标签或范围:

corepack prepare pnpm@latest --activate
corepack prepare yarn@stable --activate 

离线工作流程#

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

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

支持的包管理器#

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

包管理器二进制名称
yarnyarn , yarnpkg
PNPMpnpm , pnpx

常见问题#

Corepack 如何与 npm 交互?#

虽然 Corepack 可以像任何其他包管理器一样支持 npm,但默认情况下不启用它的垫片。这会产生一些后果:

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

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

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

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

  • 不要运行此命令;无论如何,Corepack 都会提供包管理器二进制文件,并确保请求的版本始终可用,因此不需要显式安装包管理器。

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

NodeJS中文文档为Read dev Docs平台提供托管,中文NodeJS文档均由英文版NodeJS文档翻译,版权属于nodejs.org