- assert断言
- async_hooks异步钩子
- buffer缓冲区
- C++插件
- C/C++插件(使用Node-API)
- C++嵌入器
- child_process子进程
- cluster集群
- CLI命令行
- console控制台
- Corepack核心包
- crypto加密
- debugger调试器
- deprecation弃用
- dgram数据报
- diagnostics_channel诊断通道
- dns域名服务器
- domain域
- Error错误
- events事件触发器
- fs文件系统
- global全局变量
- http超文本传输协议
- http2超文本传输协议2.0
- https安全超文本传输协议
- inspector检查器
- Intl国际化
- module模块
- module/cjsCommonJS模块
- module/esmECMAScript模块
- module/package包模块
- net网络
- os操作系统
- path路径
- perf_hooks性能钩子
- policy安全策略
- process进程
- punycode域名代码
- querystring查询字符串
- readline逐行读取
- repl交互式解释器
- report诊断报告
- stream流
- string_decoder字符串解码器
- timers定时器
- tls安全传输层
- trace_events跟踪事件
- tty终端
- url网址
- util实用工具
- v8引擎
- vm虚拟机
- wasi网络汇编系统接口
- worker_threads工作线程
- zlib压缩
Node.js v14.21.1 文档
- Node.js 14.21.1
- ► 目录
-
►
索引
- assert 断言
- async_hooks 异步钩子
- buffer 缓冲区
- C++插件
- C/C++插件(使用Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS模块
- module/esm ECMAScript模块
- module/package 包模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- policy 安全策略
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- stream 流
- string_decoder 字符串解码器
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
- ► 其他版本
- 文档搜索
目录
Corepack 核心包#
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 提供:
包管理器 | 二进制名称 |
---|---|
Yarn | yarn , yarnpkg |
pnpm | pnpm , 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
以将它们添加回来)。