什么是 Corepack?
Corepack 是 Node.js 从 v16.9.0 起引入的实验性功能,从 v16.10.0 起默认随 Node.js 安装(在 v18+ 中为稳定特性)。它是一个桥接工具,用来自动下载并管理 Node.js 包管理器(如 Yarn、pnpm),无需手动全局安装它们。
📌 目的:确保跨项目、跨团队使用一致的包管理器版本。
启用 Corepack
在某些 Node.js 版本中,Corepack 默认未启用。你可以用以下命令启用它:
            
            
              bash
              
              
            
          
          corepack enable查看当前支持的包管理器版本:
            
            
              sql
              
              
            
          
          corepack prepare --help常用命令速查表
| 命令 | 作用 | 
|---|---|
| corepack enable | 启用 Corepack 支持的包管理器 | 
| corepack disable | 禁用 Corepack | 
| corepack prepare <package>@<version> --activate | 下载并激活指定版本的包管理器 | 
| corepack use <package>@<version> | 为当前项目使用特定版本 | 
| corepack install | 安装依赖(与 npm/yarn/pnpm install 类似) | 
使用 Corepack 管理 Yarn 和 pnpm
1. 安装指定版本的 Yarn 或 pnpm
            
            
              sql
              
              
            
          
          corepack prepare yarn@3.6.4 --activate
corepack prepare pnpm@8.10.0 --activate或者指定当前项目使用的版本(推荐):
            
            
              perl
              
              
            
          
          corepack use yarn@3.6.4
corepack use pnpm@10.13.1这会在项目中生成或修改 .yarnrc.yml,锁定 Yarn 版本。
项目中锁定包管理器版本(推荐)
在项目根目录添加 packageManager 字段到 package.json:
            
            
              perl
              
              
            
          
          {
  "packageManager": "yarn@3.6.4"
}或者使用 pnpm:
            
            
              perl
              
              
            
          
          {
  "packageManager": "pnpm@8.10.0"
}Corepack 会自动读取并使用这个版本。
结合 CI/CD 使用
在 CI 中使用 Corepack 可以保证一致性。示例:
            
            
              bash
              
              
            
          
          corepack enable
corepack install升级包管理器版本
想升级 Yarn:
            
            
              sql
              
              
            
          
          corepack prepare yarn@latest --activate或者指定具体版本:
            
            
              sql
              
              
            
          
          corepack prepare yarn@4.1.0 --activate常见问题解答(FAQ)
❓ 为什么不用全局安装 Yarn/pnpm?
使用 Corepack 可以避免版本漂移,不同项目可以使用不同版本,防止开发/构建不一致。
❓ 使用 Corepack 后如何运行 yarn/pnpm 命令?
你可以直接使用 yarn 或 pnpm 命令,Corepack 会自动处理调用(如果你已启用 Corepack 并准备好版本)。
小贴士
- 配合 .nvmrc和packageManager字段,打造完全可复现的 Node 环境。
- 推荐把 corepack enable写入项目初始化脚本或 README。