用途:本技能用于处理 pnpm 的安装、更新、依赖与全局包重建,工作区命令替换,npm/npx/yarn 到 pnpm 的写法迁移,以及 Windows/PowerShell 环境下的 pnpm 故障排查。重点覆盖 ERR_PNPM_UNEXPECTED_VIRTUAL_STORE、PNPM_HOME 与全局依赖树错位、Corepack 管理 pnpm、NVM Desktop 切换 Node 后的 pnpm 运行时混乱,以及 pnpm 12 的配置语义收紧(如 allowBuilds、blockExoticSubdeps、ERR_PNPM_IGNORED_BUILDS、.npmrc 设置迁移)。
主要思路:先区分 PNPM_HOME、pnpm root -g(全局依赖树根)、pnpm bin -g、store-dir(内容寻址缓存)与 virtual-store-dir(依赖树内部的布局目录),据此判断是重建依赖树、修配置,还是切回正确的 Node/pnpm 管理链路。全局场景优先重建全局依赖树,而不是先改全局 .npmrc。
主要能力与用法:提供版本判定与升级的决策路径;给出 npm/yarn/npx 到 pnpm 的命令映射(如 pnpm add、pnpm remove、pnpm dlx、pnpm why);说明 workspace 中通过 pnpm --filter <package-name> 精确限定目标包,根包使用 -w;给出第一轮证据收集命令,例如 where.exe node/pnpm/corepack、pnpm root -g、pnpm bin -g、pnpm store path、pnpm config get virtual-store-dir 等;并要求在全局写操作前由用户明确授权。
限制与安全:不得把 --all 当作审批或失败兜底;不确定用途的包保持未批准;不手写 .modules.yaml,不把绝对 virtual-store-dir 写入全局配置;不混用 npm 全局安装、Corepack 与 pnpm self-update 管理同一 pnpm 本体;无 TTY 时仅对单次 pnpm i -g 临时设置 CI=true;原生模块报错(node-gyp、MSB8040 等)时止损而非扩大白名单;删除前先备份 global-dir 下的 package.json、pnpm-lock.yaml 与 .modules.yaml。缺失信息暂未提供。