mcpField
P
pnpm-upgrade

pnpm-upgrade

github.com/openai开发4.0k144 次安装1 周前更新
代码仓库

关于 pnpm-upgrade

pnpm-upgrade 是用于更新 pnpm 工具链及 CI 固定版本的仓库 Skill,包含发布版本与完整性检查,并指导预检、配置修改和验证。

主要功能

  1. 01解析 pnpm 版本与完整性
  2. 02将 action-setup 固定到提交 SHA
  3. 03预检 CI 安装路径
  4. 04更新 packageManager 与工作流
  5. 05验证工具链及预期差异

适用场景

  1. 01升级仓库中的 pnpm
  2. 02更新 pnpm/action-setup 工作流固定版本
  3. 03升级前检查引导安装路径

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/openai/openai-agents-js --skill pnpm-upgrade

安装后在 Claude Code 中输入/pnpm-upgrade确认已加载。

附带文件agents/openai.yamlscripts/preflight.mjs

详细介绍

升级 pnpm

按照以下步骤更新 pnpm 和 CI 固定版本,避免盲目搜索和替换。

步骤(从仓库根目录运行)

  1. 确定目标 pnpm 版本

    • 在更改本地工具链前查询 npm 注册表:PNPM_VERSION=$(curl -fsSL https://registry.npmjs.org/pnpm/latest | jq -r .version)。
    • 如果缺少版本号,则中止。
    • 获取确切的包完整性值:curl -fsSL "https://registry.npmjs.org/pnpm/${PNPM_VERSION}" | jq -r .dist.integrity。
    • 将结果存储为 PNPM_INTEGRITY。
    • 如果缺少完整性值,或其不以 sha512- 开头,则中止。
    • 将 sha512- 后的 base64 摘要转换为小写十六进制,例如:
      printf '%s' "${PNPM_INTEGRITY#sha512-}" | base64 -d | xxd -p -c 256
      
    • 将结果存储为 PNPM_SHA512_HEX。
  2. 查找目标 pnpm/action-setup 版本

    • 查询 GitHub API:curl -fsSL https://api.github.com/repos/pnpm/action-setup/releases/latest | jq -r .tag_name。
    • 如果有 GITHUB_TOKEN/GH_TOKEN,请使用以提高速率限制。
    • 存储为 ACTION_TAG(例如 v4.2.0)。如果缺少,则中止。
  3. 将 action 标签解析为不可变的提交 SHA

    • 运行 git ls-remote https://github.com/pnpm/action-setup "refs/tags/${ACTION_TAG}^{}",并将 SHA 保存为 ACTION_SHA。
    • 如果找不到解引用后的标签,则回退到运行 git ls-remote https://github.com/pnpm/action-setup "refs/tags/${ACTION_TAG}"。
    • 如果 ACTION_SHA 为空,则中止。
  4. 预检发布版本和 CI 安装路径

    • 运行 node .agents/skills/pnpm-upgrade/scripts/preflight.mjs --version "${PNPM_VERSION}" --action-ref "${ACTION_SHA}"。
    • 脚本首先会拒绝 dependencies 或 devDependencies 非空的已发布 pnpm 清单。pnpm 会捆绑其运行时依赖,因此这些字段表明发布有问题,例如 [email protected]。
    • 随后,脚本会在两个独立的临时目录中复现 pnpm/action-setup 的两种安装路径:从 pnpm-lock.json 安装常规 pnpm 引导程序,从 exe-lock.json 安装独立的 @pnpm/exe 引导程序,设置隔离的 PNPM_HOME 目录,并将每个引导程序自更新至 PNPM_VERSION。
    • 如有任何失败,则中止升级。不要通过直接本地安装绕过此检查;预检旨在验证仅用于 CI 的引导路径。
  5. 在本地更新 pnpm

    • 运行 pnpm self-update "${PNPM_VERSION}"。
    • 如果 pnpm 缺失,或自更新失败的唯一原因是当前安装无法自行更新,则运行 corepack prepare "pnpm@${PNPM_VERSION}" --activate。不要使用此回退方式绕过失败的预检。
    • 确认 pnpm -v 与 PNPM_VERSION 完全一致。
  6. 对齐 package.json

    • 打开 package.json,将 packageManager 设置为 pnpm@${PNPM_VERSION}+sha512.${PNPM_SHA512_HEX}(保留末尾换行和格式)。
  7. 谨慎更新工作流(不要使用宽泛的正则表达式)

    • 文件:.github/workflows/ 下所有使用 pnpm/action-setup 的文件。
    • 对每个文件手动编辑:
      • 设置 uses: pnpm/action-setup@${ACTION_SHA}。
      • 如果存在 with: version: 字段,则将其设置为 ${PNPM_VERSION}(保留引号样式和缩进)。
    • 不要改动无关步骤。避免使用多行 sed/perl 单行命令。
  8. 验证

    • 运行 pnpm -v,确认其与 packageManager 中的版本部分一致。
    • 确认 packageManager 保留了准确的 +sha512.${PNPM_SHA512_HEX} 后缀。
    • 运行 git diff,确保只包含预期的工作流和 package.json 更改。
  9. 后续处理

    • 如果更改了运行时代码/构建/测试配置(此处通常不会),则运行 $code-change-verification;否则进行轻量检查即可。
    • 使用 chore: upgrade pnpm toolchain 提交,并创建 PR(自动化流程可能会处理)。

注意事项

  • 所需工具:curl、jq、base64、xxd、node、npm 和 pnpm/corepack。如果缺少,请安装。
  • 尽量少做修改,保持内容易读——优先直接编辑文件,而非全局替换。
  • GitHub Actions 必须固定到提交 SHA,而不是标签。仅使用最新发布标签来查找要固定的提交 SHA。
  • 如果 GitHub API 遭遇速率限制,请使用令牌重试,否则就放弃,不要猜测标签。

评论

支持 Markdown