SuperAPI AI 工具集

tooling-and-dependencies

部署与运维

查看项目

更新于 10-16 09:51

技能介绍

用途:本技能用于在仓库内统一管理工具链、包管理、依赖版本与任务入口,适用于运行仓库脚本、增改依赖、编辑 package.json、安装或发布包,以及判断何时使用 pnpm 等场景。

工具链:bun、pnpm、node、moon、gh 的版本固定在 .prototools,由 proto 管理;更新工具只需改 .prototools,不要全局安装或在别处固定版本。moon 版本还受 .moon/workspace.yml 的 versionConstraint 约束,并与 @moonrepo/cli catalog 条目保持一致,三处需同步。CI 通过 moonrepo/setup-toolchain 对同一 .prototools 执行 proto install。

包管理与运行时:包操作使用 pnpm(install、add、remove、dedupe、lockfile、package-runner、publish),除非有明确记录的原因,不要用 bun、npm、yarn、npx 等做包操作。bun 仍作为 TypeScript 直接运行时和 Bun test 运行器,供现有 moon 任务使用;本地脚本可以是 .ts 文件而无需单独编译。

依赖目录:使用 pnpm-workspace.yaml 中的 catalog,默认不要把版本直接写进单个包的 package.json。新增依赖时先把精确版本写入 catalog,例如 "new-package": "1.2.3",再在包中引用 "new-package": "catalog:"。不要在包目录内执行 pnpm add <package>,以免写入直接版本破坏 catalog 模式。已发布包可为终端用户兼容性有意使用范围版本,apps/docs 应使用 catalog 版本。

任务:所有 build/dev/test/lint 入口都是 moon 任务,package.json 脚本只保留 npm 生命周期钩子(如 prepublishOnly),不要往 package.json 加任务脚本。任务定义在 .moon/tasks/*.yml(继承)和各项目 moon.yml,仓库级工具(format、lint、icons、clean)位于根项目。可在仓库任意位置运行 moon run <project>:<task>、moonx <project>:<task>,参数置于 -- 之后;moon run :test 可跨项目运行任务,moon tasks <project> 用于发现任务。moon run 与 moonx(moon exec 的别名)执行同一流水线,区别是 moonx/moon exec 支持 --ignore-ci-checks、--ci 等 CI 行为覆盖;moon ci 仅由 CI 工作流使用,不要在本地调用。

限制:本地专属任务不用 moon 预设,而设 runInCI: 'always'(无图边任务)或 runInCI: 'skip'(接入构建图的任务);在 CI 标记的 shell 中可用 moonx <target> --ignore-ci-checks 运行被跳过的任务;自行做 CI 门控的非 moon 命令应改用 CI= pnpm publish --dry-run 之类方式。