Skip to content
返回

pnpm 11 升级变化扫盲:变化清单 + 避坑指南

下班之后没人亲亲,敲段代码哄自己开心。写个demo修完bug,誓让女神喊你哥哥。

pnpm 11 不是功能堆料,而是一次“地基重铺”——安全默认项被固化,配置体系大挪移。升级的痛感不在新功能,在配置搬家。


一、版本主要变化

1. Node 22 成硬门槛

2. 供应链保护默认开启(v10 还是“建议开”,v11 直接出厂默认)

3. 存储索引换 SQLite(store v11)

4. 全局安装隔离

5. 发布流程“去 npm CLI 化”


二、重大配置变更

① .npmrc 被“瘦身”——只留认证和 registry 其余所有配置必须搬到 pnpm-workspace.yaml 或全局 ~/.config/pnpm/config.yaml。 网络类设置(httpProxy / httpsProxy / noProxy / localAddress / strictSsl / gitShallowHosts)也在搬家之列。

② allowBuilds 取代 5 个旧配置(已移除)

# pnpm-workspace.yaml
allowBuilds:
  esbuild: true
  "@swc/core": true
  "github:some/package": false

③ 环境变量前缀 pnpm_* → pnpm_config_*

# 旧
pnpm_onlyBuiltDependencies=esbuild
# 新
pnpm_config_onlyBuiltDependencies=esbuild

④ pnpm audit 过滤:CVE → GHSA

# 旧
auditConfig:
  ignoreCves: ["CVE-2024-xxxx"]
# 新
auditConfig:
  ignoreGhsas: ["GHSA-xxxx-xxxx-xxxx"]

(顺带:audit --fix=update 可在 lockfile 直接升级修复,--fix --interactive 可交互选择。)

⑤ Patch 相关硬改动

⑥ node-mirror:(.npmrc)→ nodeDownloadMirrors(workspace.yaml)

# pnpm-workspace.yaml
nodeDownloadMirrors:
  release: https://my-mirror.example.com/download/release/

三、对开发者的实质影响


四、升级步骤

  1. 升 Node 到 22+(CI / 本地 / 镜像同步)
  2. 跑 pnpm-v10-to-v11 codemod 做机械迁移
  3. 手动补三类配置:.npmrc 搬家 → allowBuilds 重写 → ignoreGhsas 改写
  4. pnpm setup 刷新 PATH
  5. pnpm install 验证:确认没有 postinstall 被静默拦截、没有 patch 静默失败

团队层面:把 Node 22 + 标准 pnpm-workspace.yaml 写进脚手架模板,让新项目天生合规。


结语:这次升级到底改了什么

把上面的变动收拢成一句话结论——pnpm 11 的升级,本质是三件事:抬门槛、搬配置、固安全。

变动看着多,但绝大多数配置改动是机械的、可脚本化的。把它想清楚,升级就顺了。


Share this post on:

Previous Post
东野圭吾:谜底揭晓之后,剩下的是人生
Next Post
Pinia 4.0 全面 ESM-only:前端模块化,终于只剩一条路