用途 本技能是一份面向 AI 智能体的分步操作手册,用于对发布在 MOPS 上的 Motoko 包执行一次较完整的自动化维护:升级依赖、验证包质量、修复编译器告警、运行测试与基准、修复因升级导致的破坏、更新 CHANGELOG、检查文档与 README、格式化代码、确保 CI 配置,并准备一个带版本号的发布分支。
适用时机
- 周期性的依赖升级维护。
- 裁剪新版本之前。
- 用户提出“更新依赖”“维护包”或“准备发布”时。
前置条件
- mops CLI(npm i -g ic-mops)。
- moc(Motoko 编译器),通过 mops.toml 的 [toolchain] moc 固定,并用 mops toolchain bin moc 获取;自 mops CLI v3.0.0 起没有 dfx 内置回退,固定版本是必需的。
- pocket-ic(基准运行环境),当包带有基准测试时通过 [toolchain] pocket-ic 固定。
- wasm-opt(Binaryen),仅当 mops.toml 中设置了 [optimize] 时才运行,且此时需要固定 [toolchain] wasm-opt。
- dfx(DFINITY SDK,可选,仅用于构建 canister 或示例,mops bench 不需要)。
- node >= 22 / npm,用 node --version 验证。
- git。
- prettier 与 prettier-plugin-motoko,需在运行 prettier 前本地安装。
主要约定
- pocket-ic 是唯一的基准运行环境,像 moc 一样固定版本;mops CLI v3.0.0 完全移除了 dfx-replica 支持。
- 基准应测量优化后的 Wasm,需配置 [optimize] 并固定 wasm-opt;mops bench 与 mops build 仅在存在 [optimize] 段时才运行 Binaryen 的 wasm-opt。
- mops.toml 中的 [package] files 字段和 [toolchain] 条目默认不自动修改,应报告并警告;但 [toolchain] pocket-ic 与 [optimize]/[toolchain] wasm-opt 在基准需要时可添加。
- CHANGELOG 仅列出面向使用者的变更:[dependencies] 与 [requirements],不列 [toolchain] 或 [dev-dependencies]。
- 文档门槛:若 MOPS 报告 Documentation = 100%,跳过第 7、8 步;否则以 100% 为目标。
- CI 中不使用 moc --check,那是维护期间本地运行的检查。
- mops add 会重写 mops.toml,可能把 [requirements] moc 静默重置为 "1.0.0",每次后需 diff 并恢复。
工作流程(按顺序执行,失败则先修复再继续)
- 步骤 0:创建维护分支 chore/dependency-bump-$(date +%Y-%m-%d),并快照未跟踪文件列表。
- 步骤 1:在 MOPS 验证包质量。检查 mops.toml 是否含 [package] 段;访问 https://mops.one/<package-name> 查看 Documentation、License、Repository、Tests、Benchmarks;mops.one 是 SPA,无法渲染时用 mo-doc 等本地方式推导信号,无法验证的请用户确认。
- 步骤 2:用 mops outdated 发现过期依赖(回退 mops search <package-name>)。
- 步骤 3:在 mops.toml 中升级 [dependencies] 与 [dev-dependencies],确定 [requirements] moc 的初始值(排除 core 后取最大值),必要时对每个中间 moc 版本迭代验证(依次设置 [toolchain] moc 并运行 mops test/bench 和示例构建),最终同步回最新版本并运行 mops install。
- 步骤 3a:同步嵌套 mops.toml(用 find 查找),第三方依赖版本一般与根一致,示例中的相对导入改为 mo:self-package-name/... 形式以便复制即用。
- 步骤 3b:审计仓库卫生文件(.gitignore 内容、package-lock.json、package.json、[package] files 等)。
- 步骤 3c:修复编译器告警,仅处理编译器实际输出的告警/错误,逐个告警类别修复并重跑检查与测试。
- 步骤 4:运行 mops test,修复因依赖 API 变化导致的失败,记录非平凡变更。
- 步骤 5:运行基准(bench/*.bench.mo),确保 pocket-ic 与 [optimize]/[toolchain] wasm-opt 均已固定;区分环境失败与代码失败,显著回退记入 CHANGELOG 但不阻塞发布。
- 步骤 6:更新 CHANGELOG,仅含依赖升级、破坏性/显著变更与缺陷修复。
- 步骤 7:检查并改进 /// 文档字符串(若 Documentation 已达 100% 则跳过)。
- 步骤 8:检查 README 与其他 Markdown 的事实准确性,补充新 API 说明与格式化命令文档。
- 步骤 9:格式化。9a 配置 .prettierrc;9b 先本地安装 prettier 与 prettier-plugin-motoko 再格式化;9c 验证或添加 CI 工作流(tests + formatting,含 pocket-ic/wasm-opt 安装步骤,勿加手动 dfx start --background)。
- 步骤 10 至 11:确定版本号并完成版本化发布分支与暂存文件检查(原文此部分在截断处未完整提供)。
限制与未提供信息 原文中部分内容被截断(如步骤 9c 代码块下半段、步骤 10/11 的具体内容),这段内容暂未提供;原文未说明收费、价格、效果或平台支持范围等信息。