SuperAPI AI 工具集

pnpm-upgrade

通用与其它

查看项目

更新于 10-16 07:27

技能介绍

用途:在不使用粗暴全局搜索替换的前提下,把仓库中的 pnpm 版本与 CI 固定项升级到最新发布版本,适用于使用 pnpm/action-setup 的 GitHub Actions 项目。

主要能力与用法(在仓库根目录执行):先查询 npm registry 解析目标版本 PNPM_VERSION=$(curl -fsSL https://registry.npmjs.org/pnpm/latest | jq -r .version),并获取对应 dist.integrity 存为 PNPM_INTEGRITY;缺失或未以 sha512- 开头则中止。将 sha512- 之后的 base64 摘要转为小写十六进制,存为 PNPM_SHA512_HEX。接着查询 pnpm/action-setup 最新发布标签(如 v4.2.0)存为 ACTION_TAG,并用 git ls-remote 解析为不可变提交 SHA(优先 refs/tags/${ACTION_TAG}^{},缺失时回退到 refs/tags/${ACTION_TAG}),存为 ACTION_SHA,为空则中止。

预检:运行 node .agents/skills/pnpm-upgrade/scripts/preflight.mjs --version "${PNPM_VERSION}" --action-ref "${ACTION_SHA}"。脚本会拒绝 dependencies 或 devDependencies 非空的 pnpm 发布清单(pnpm 自带运行时依赖,非空说明发布异常),并在临时目录中复现 pnpm/action-setup 的两条安装路径:从 pnpm-lock.json 安装常规引导、从 exe-lock.json 安装独立 @pnpm/exe 引导,设置隔离的 PNPM_HOME,再自更新到目标版本。任何失败都应中止,不得用直接本地安装绕过。

更新与同步:执行 pnpm self-update "${PNPM_VERSION}";若 pnpm 缺失或仅因当前安装无法自更新失败,可用 corepack prepare "pnpm@${PNPM_VERSION}" --activate 回退,但不得借此绕过预检失败。确认 pnpm -v 与目标版本完全一致。在 package.json 中将 packageManager 设为 pnpm@${PNPM_VERSION}+sha512.${PNPM_SHA512_HEX},保留末尾换行与格式。

CI 修改:逐一手动编辑 .github/workflows/ 下所有使用 pnpm/action-setup 的文件,把 uses 设为 pnpm/action-setup@${ACTION_SHA};若存在 with: version: 字段则设为 ${PNPM_VERSION} 并保留引号风格与缩进;不动无关步骤,避免多行 sed/perl 一行命令。

验证与收尾:运行 pnpm -v 确认与 packageManager 版本部分一致,确认 +sha512.${PNPM_SHA512_HEX} 后缀完整,用 git diff 检查仅改动目标文件;如改了运行时代码或构建测试配置,运行 $code-change-verification,否则轻量检查即可,提交信息建议 chore: upgrade pnpm toolchain 并开 PR。

限制与依赖:需要 curl、jq、base64、xxd、node、npm 以及 pnpm/corepack;GitHub Actions 必须固定到提交 SHA 而非标签,最新发布标签仅用于查找 SHA;GitHub API 限流时应带 token 重试或放弃,不要猜测标签。其他细节暂未提供。