`corepack` 安装pnpm

macOS 上,已经有 nvm + Node.js + yarn 的情况下,安装 pnpm :


✅ 最推荐:用 Corepack(官方方式,和 nvm 不冲突)

Node 16.9+ / 18+ 默认内置 Corepack

nvm 管理的 Node 也支持

1️⃣ 确认 Node 版本

bash 复制代码
node -v

如果 ≥ 16.9(你大概率是 18 / 20),直接继续。


2️⃣ 启用 Corepack

bash 复制代码
corepack enable

这一步只需执行一次


3️⃣ 激活 pnpm(推荐指定版本)

bash 复制代码
corepack prepare pnpm@latest --activate

或者:

bash 复制代码
corepack prepare pnpm@9 --activate

4️⃣ 验证

bash 复制代码
pnpm -v

🎯 优点

  • 不污染全局 npm
  • 跟 nvm / Node 版本切换完全兼容
  • 官方推荐方案(未来最稳)

🟡 备选方案:用 npm 全局安装(不推荐但可用)

如果你不想用 Corepack:

bash 复制代码
npm install -g pnpm

⚠️ 缺点:

  • 切 Node 版本后可能要重装
  • 不如 Corepack 干净

❌ 不建议:brew 安装 pnpm

bash 复制代码
brew install pnpm

不推荐原因

  • 和 nvm 管理的 node 路径容易冲突
  • 多 Node 版本时容易踩坑

🧪 验证 pnpm 是否和 yarn / nvm 共存正常

bash 复制代码
which pnpm
which yarn
which node

理想情况:

  • node → nvm 目录
  • pnpm → corepack shim
  • yarn → corepack / 原路径

📦 使用 pnpm 的基础命令速查

bash 复制代码
pnpm install        # 安装依赖
pnpm add react      # 添加依赖
pnpm add -D vite    # 开发依赖
pnpm dev            # 启动项目
pnpm dlx create-astro

🧠 常见问题(你这种环境很常见)

Q1:pnpm 会影响 yarn 吗?

👉 不会

  • pnpm / yarn 可在不同项目并存
  • packageManager 字段决定
json 复制代码
{
  "packageManager": "pnpm@9.0.0"
}

Q2:nvm 切 Node 版本后 pnpm 还在吗?

👉 用 Corepack 就一直在

如果切了老 Node:

bash 复制代码
corepack enable

Q3:我已经有 yarn classic / berry?

👉 也没问题,Corepack 同时支持:

  • yarn
  • pnpm

安装过程如遇到如下问题:

bash 复制代码
corepack prepare pnpm@9 --activate Preparing pnpm@9 for immediate activation... Internal Error: Cannot find matching keyid: {"signatures":。。。。

这个报错 不是你操作问题 ,而是一个 Corepack + pnpm 的已知签名校验问题 ,在 Node 20.x(尤其是你这个 20.13.1)+ 旧 Corepack key 缓存 的组合下非常常见。

我先用一句话解释,再给你 100% 可用的解决方案(按推荐顺序)


一句话结论(你现在遇到的是什么)

Corepack 在校验 pnpm 的签名时,发现"签名用的 keyid 和本地信任的 key 对不上"

👉 导致 Cannot find matching keyid

这是 Corepack 自己的 keyring 过期 / 不同步 问题,不是 pnpm 有问题,也不是你网络问题。


✅ 方案一(最推荐 & 最干净):升级 Corepack 自身

你现在用的是 Node 自带的 corepack,版本偏旧。

1️⃣ 先确认

bash 复制代码
corepack --version

2️⃣ 用 npm 升级 corepack(官方推荐修复方式)

bash 复制代码
npm install -g corepack@latest

⚠️ 这一步 不会影响 nvm / node,只是升级 corepack CLI。


3️⃣ 重新启用 + 激活 pnpm

bash 复制代码
corepack enable
corepack prepare pnpm@9 --activate

4️⃣ 验证

bash 复制代码
pnpm -v

👉 90% 的人到这里就好了


✅ 方案二(非常稳):跳过 prepare,直接用 corepack install

有些 Corepack 版本在 prepare 上有 bug,但 install 正常。

bash 复制代码
corepack enable
corepack install -g pnpm@9

然后:

bash 复制代码
pnpm -v

✅ 方案三(应急 / 临时):用 npm 装 pnpm(你可以之后再切回)

如果你现在急着用 pnpm(比如 Astro / demo):

bash 复制代码
npm install -g pnpm@9

✔ 能立刻用

❌ 不是最优雅,但完全安全

后面你修好 corepack 再换回即可。


❌ 不推荐但解释一下:为什么会这样

你看到的错误关键信息是:

复制代码
Cannot find matching keyid

本质原因:

  • pnpm 发布包 更新了签名 key
  • 你当前 corepack 内置的 key 列表 还停留在旧版本
  • Corepack 是"强校验派",直接拒绝

这在:

  • Node 20.x
  • macOS
  • nvm 用户
    特别常见

🧪 修好后,推荐你检查一次环境

bash 复制代码
which node
which corepack
which pnpm

理想情况:

  • node → ~/.nvm/...
  • corepack → 同一个 node 目录
  • pnpm → corepack shim
相关推荐
恋猫de小郭2 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅8 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60619 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了9 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅9 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅10 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅10 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment10 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅11 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊11 小时前
jwt介绍
前端