| name | pnpm-major-migrator |
| description | 迁移 pnpm 大版本(major)及其项目配置时使用。适用于用户提到 upgrade pnpm major、pnpm v10 to v11、pnpm migration、迁移 pnpm 版本、lockfile 升级、pnpm-workspace.yaml 迁移、.npmrc 配置迁移、GitHub Actions pnpm 版本对齐。当前优先覆盖 v10 到 v11,并保留后续 v12+ 的可扩展流程。 |
Pnpm Major Migrator
铁律:不要在未完成基线采集、回滚预案和最小质量门之前直接升级 pnpm major。
工作流
当前优先画像:v10 到 v11
- 必须使用 references/v10-to-v11-checklist.md。
- 重点检查以下高风险面:
package.json#pnpm 是否已迁移到 pnpm-workspace.yaml。
.npmrc 中非 auth/registry 配置是否已迁移到 pnpm-workspace.yaml。
- 构建依赖相关配置是否统一到
allowBuilds 语义。关键规则:
- 确认
pnpm-workspace.yaml 中的 allowBuilds 覆盖了所有需要构建脚本的依赖(如 esbuild、sharp、workerd 等),否则 pnpm install 会报 ERR_PNPM_IGNORED_BUILDS,导致本地与 CI 均无法构建。
- ⚠️ 校验
allowBuilds 值均为合法 boolean:allowBuilds 下的 value 必须是 true 或 false,不能是字符串占位符(如 "set this to true or false")。占位符文本在 YAML 语法上合法(被解析为字符串),但 pnpm 不会将其解释为允许构建,pnpm install 仍会报错。
- 旧 strictness 配置是否迁移到
pmOnFail。
auditConfig.ignoreCves 是否改为 auditConfig.ignoreGhsas,并补做 CVE 到 GHSA 的人工映射。
后续版本扩展位
- 迁移画像扩展:在 references/version-profiles.md 增加
v11 -> v12、v12 -> v13 专项节。
- 规则扩展:将新版本破坏性变更按“自动化可处理/需人工确认/需业务决策”三类归档。
- 验证扩展:为常见 CI 平台(GitHub Actions、Docker、Cloudflare)补充最小验证矩阵。
反模式
- 只升级
packageManager 字段,不同步 lockfile 与 CI。
- 在原本没有
packageManager 的项目里强行新增该字段。
- 未清点
.npmrc 与 pnpm-workspace.yaml 的职责边界,导致配置失效。
- 更新了 workspace/CI 配置但遗漏
Dockerfile,导致容器构建与本地环境版本漂移。
- 未记录人工遗留项就宣告迁移完成。
- 在
latest 模式下跑迁移并提交,造成后续不可复现。
- 迁移后未确认
allowBuilds 配置是否覆盖关键构建依赖,导致 CI 中出现 ERR_PNPM_IGNORED_BUILDS。
allowBuilds 的 value 残留占位符文本(如 "set this to true or false"),在 YAML 语法上合法但 pnpm 无法识别,等同于未配置。
- 使用
-replace 或字符串操作修改 YAML 文件(如 pnpm-workspace.yaml)时,缩进错误会导致整个文件解析失败。修改 YAML 的正确做法:先 Get-Content -Raw 读全文件检查 key 是否已存在,插入时确保缩进与已有条目对齐(2 空格);或用 Write 工具全量覆写。
交付前检查