Node.js 官方内置的包管理工具代理,从 Node.js 16.13+ 开始内置,默认禁用。用于简化和管理 pnpm、yarn 等包管理工具的安装和版本控制。

核心功能

  • 自动管理 pnpm、yarn 版本,无需手动全局安装
  • 确保不同项目使用不同的包管理器版本,避免团队版本不一致
  • 允许在 package.json 中声明包管理器版本
    • 避免全局安装 pnpm/yarn,提升安全性

基本使用

# 启用 corepack(默认禁用)
corepack enable
 
# 检查版本
corepack --version
 
# 安装特定版本的包管理器
corepack prepare yarn@3.2.1 --activate
 
# 更新 corepack
corepack update

指定项目包管理器版本

在 package.json 中声明:

{
  "packageManager": "yarn@3.2.1"
}

声明后,在该项目执行 yarn 时,corepack 会自动使用 yarn@3.2.1,即使系统没有全局安装该版本。

# 直接应用当前使用的包管理器版本到 package.json
corepack use

工具边界

  • corepack 是版本代理,不是包管理器本身
  • 主要管理 yarn 和 pnpm,npm 版本管理通过 nvm/n 来做
  • 适合团队项目统一包管理器版本,CI/CD 环境特别有用

踩坑点

  • Node.js 16.13+ 内置但默认禁用,必须先 corepack enable
  • corepack enable 后 yarn/pnpm 命令会被代理,首次使用会自动下载对应版本
  • 与 nvm 共用时,每次切换 Node.js 版本后需重新 corepack enable