用途
Safe pnpm updater 用于在 pnpm 管理的 JavaScript 与 TypeScript 项目中,安全地调查、安装与更新依赖。它通过 Socket Firewall 和发布年龄(release-age)检查来约束更新行为,在选择版本时兼顾安全性、兼容性与成熟度,而不是简单地追新。
主要能力
- 探测项目技术栈与验证命令,而非假设框架或应用类型。
- 在请求范围内选择满足发布年龄、安全与兼容性检查的最新稳定版本。
- 通过 Socket Firewall 相关预检建立安全边界,并用包装脚本执行所有 pnpm 命令。
- 对无法验证的候选项延后处理,并报告具体阻塞原因。
- 支持按兼容性分组逐步应用更新,保留可恢复性。
- 处理补丁(patches)、覆盖(overrides)、对等依赖例外与生命周期脚本审批等既有例外。
- 通过最终全图审计、对等依赖与弃用检查等进行验证,并输出结构化状态报告。
使用方式
先读取仓库说明并检查工作树,依据 packageManager、锁文件、工作区配置与 CI 判定包管理器;若为 npm、Yarn 或 Bun,则报告不支持执行,且不会将项目迁移到 pnpm。
随后从项目或工作区根目录运行预检脚本:
bash "<skill-directory>/scripts/check-prerequisites.sh" "$PWD"
预检要求交互式 zsh 别名 sfw --verbose pnpm、可执行的 sfw、Socket Firewall 运行时确认,以及有效的正数 minimumReleaseAge(分钟)。若预检失败,须在候选研究、注册表查询、依赖编辑或安装之前停止,并报告确切的 SAFE_DEPENDENCY_UPDATE_BLOCKED 原因。
后续所有 pnpm 命令(包括项目脚本、注册表查询、安装与审计)都须通过包装脚本执行:
bash "<skill-directory>/scripts/run-pnpm.sh" <pnpm-arguments...>
不得使用未包装的 pnpm 二进制、npm、npx、Yarn、Bun 或 Corepack 作为回退。不得为让更新成功而降低发布年龄、添加发布年龄排除、使用 --trust-lockfile、禁用 Socket,或更改别名、注册表或全局配置。
适用场景
适用于需要对 pnpm 项目的依赖进行受控更新的场景,例如按明确范围更新部分直接依赖、审查候选项的兼容性与安全证据、处理已有补丁或覆盖、以及在更新后运行仓库自身的 CI 与功能校验。审计/审查类请求仅覆盖调查,安装已有依赖不等于授权升级它们。
限制
- 仅针对 pnpm;其他包管理器不受支持且不会自动迁移。
- 必须先通过预检,否则不进行候选研究或安装。
- 需要可信的发布时间戳;缺失时间戳会被拒绝。
- 预发布版本仅在明确请求时使用,并适用相同的年龄检查。
- 非注册表来源(Git/file/URL)的更新会延后,直到建立适当来源与验证策略。
- 无法验证的候选项会被延后并报告阻塞原因。
- 未经授权不进行分支、提交、推送、创建 PR、部署、发布、发送消息或修改远程环境等操作。
- 测试通过和审计干净被视为证据,而非完整安全性的证明。
具体价格、收费、平台或效果等信息暂未提供。