[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"doc-\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-006-publish_guide\u002F":3},"\u003Ch1 id=\"npm-%E5%8C%85%E5%8F%91%E5%B8%83%E6%8C%87%E5%8D%97\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#npm-%E5%8C%85%E5%8F%91%E5%B8%83%E6%8C%87%E5%8D%97\">#\u003C\u002Fa> NPM 包发布指南\u003C\u002Fh1>\n\u003Cp>本文档介绍如何使用 Changesets 发布 CMTX 项目的 NPM 包。\u003C\u002Fp>\n\u003Ch2 id=\"1.-%E6%A6%82%E8%BF%B0\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.-%E6%A6%82%E8%BF%B0\">#\u003C\u002Fa> 1. 概述\u003C\u002Fh2>\n\u003Cp>CMTX 项目使用 \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchangesets\u002Fchangesets\">@changesets\u002Fcli\u003C\u002Fa> 管理版本和发布流程，所有包遵循语义化版本（SemVer）规范。\u003C\u002Fp>\n\u003Ch3 id=\"1.1.-%E7%89%88%E6%9C%AC%E7%BA%A6%E6%9D%9F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.1.-%E7%89%88%E6%9C%AC%E7%BA%A6%E6%9D%9F\">#\u003C\u002Fa> 1.1. 版本约束\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>所有包必须保持 \u003Ccode>0.x.x\u003C\u002Fcode> 版本系列\u003C\u002Fstrong>，第一位（major）严禁 ≥ 1。CMTX 仍处于活跃开发阶段，在以下条件全部满足前不得发布 1.0.0：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>所有公开 API 经充分审查并确认稳定\u003C\u002Fli>\n\u003Cli>无 fail-open 式静默错误处理\u003C\u002Fli>\n\u003Cli>无桩函数（stub）provider 实现\u003C\u002Fli>\n\u003Cli>构造函数不执行业务逻辑或抛错\u003C\u002Fli>\n\u003Cli>经团队决策同意\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>违反此约束的版本应立即撤回或标记 deprecated。\u003C\u002Fp>\n\u003Ch3 id=\"1.1.-%E9%80%82%E7%94%A8%E8%8C%83%E5%9B%B4\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#1.1.-%E9%80%82%E7%94%A8%E8%8C%83%E5%9B%B4\">#\u003C\u002Fa> 1.1. 适用范围\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>适用包列表：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>以下包使用本发布流程：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>@cmtx\u002Fcore\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fstorage\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Ftemplate\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Ffpe-wasm\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fasset\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Frule-engine\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fai\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fautocorrect-wasm\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fmarkdown-it-presigned-url\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fmarkdown-it-presigned-url-adapter-nodejs\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fcli\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>@cmtx\u002Fmcp-server\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>不适用包：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>cmtx-vscode\u003C\u002Fcode> - VS Code 扩展使用 VS Marketplace 的预发布机制（参见 \u003Ca href=\"\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002Fvscode-extension-DEV-006-vscode-publish-guide\u002F\">\u003Ccode>packages\u002Fvscode-extension\u002FDEV-006-vscode-publish-guide.md\u003C\u002Fcode>\u003C\u002Fa>）\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"2.-%E5%89%8D%E7%BD%AE%E8%A6%81%E6%B1%82\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.-%E5%89%8D%E7%BD%AE%E8%A6%81%E6%B1%82\">#\u003C\u002Fa> 2. 前置要求\u003C\u002Fh2>\n\u003Ch3 id=\"2.1.-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.1.-%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87\">#\u003C\u002Fa> 2.1. 环境准备\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 确保已安装 Node.js 22+\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">node\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 确保已登录 npm\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> whoami\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"2.2.-%E6%9D%83%E9%99%90%E8%A6%81%E6%B1%82\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#2.2.-%E6%9D%83%E9%99%90%E8%A6%81%E6%B1%82\">#\u003C\u002Fa> 2.2. 权限要求\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>确保 npm 账号有 \u003Ccode>@cmtx\u003C\u002Fcode> 组织的发布权限\u003C\u002Fli>\n\u003Cli>确认包名在 npm 上可用：\u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fsearch?q=@cmtx\">https:\u002F\u002Fwww.npmjs.com\u002Fsearch?q=@cmtx\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"3.-%E6%97%A5%E5%B8%B8%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.-%E6%97%A5%E5%B8%B8%E5%BC%80%E5%8F%91%E6%B5%81%E7%A8%8B\">#\u003C\u002Fa> 3. 日常开发流程\u003C\u002Fh2>\n\u003Ch3 id=\"3.1.-%E5%88%9B%E5%BB%BA%E5%8F%98%E6%9B%B4%E9%9B%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.1.-%E5%88%9B%E5%BB%BA%E5%8F%98%E6%9B%B4%E9%9B%86\">#\u003C\u002Fa> 3.1. 创建变更集\u003C\u002Fh3>\n\u003Cp>每次功能开发完成后，为更改创建变更集：\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> add\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>按提示操作：\u003C\u002Fp>\n\u003Col>\n\u003Cli>选择受影响的包\u003C\u002Fli>\n\u003Cli>选择版本类型（major\u002Fminor\u002Fpatch）\u003C\u002Fli>\n\u003Cli>输入更改说明\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>变更集将保存在 \u003Ccode>.changeset\u002F\u003C\u002Fcode> 目录下。\u003C\u002Fp>\n\u003Ch3 id=\"3.2.-%E6%8F%90%E4%BA%A4%E5%8F%98%E6%9B%B4%E9%9B%86\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.2.-%E6%8F%90%E4%BA%A4%E5%8F%98%E6%9B%B4%E9%9B%86\">#\u003C\u002Fa> 3.2. 提交变更集\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> .changeset\u002F\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\">*\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">.md\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> commit\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -m\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"Add changeset for feature X\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"3.3.-%E7%AE%A1%E7%90%86-changelog\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#3.3.-%E7%AE%A1%E7%90%86-changelog\">#\u003C\u002Fa> 3.3. 管理 CHANGELOG\u003C\u002Fh3>\n\u003Cp>CMTX 的 CHANGELOG 由 Changesets 自动生成。每次发布执行 \u003Ccode>pnpm changeset version\u003C\u002Fcode> 时，Changesets 会整合 \u003Ccode>.changeset\u002F\u003C\u002Fcode> 目录下的变更集文件，自动更新各包的 \u003Ccode>CHANGELOG.md\u003C\u002Fcode> 和版本号。\u003C\u002Fp>\n\u003Cp>CHANGELOG 的详细编写规范（包括双语格式要求）参见 \u003Ca href=\"\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-008-changelog_guide\u002F\">DEV-008: Changeset 编写与 CHANGELOG 管理指南\u003C\u002Fa>。\u003C\u002Fp>\n\u003Cp>\u003Cstrong>CHANGELOG 格式示例（先中文后英文）：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre data-lang=\"markdown\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\"># @cmtx\u002Fcore 更新日志 \u002F Changelog\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">## [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">Unreleased\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 新功能 A\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Fixed\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 修复 B\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">## [\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;text-decoration:underline\">0.3.0\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5;font-weight:bold\">] - 2026-04-03\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> 功能描述\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">---\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5;font-weight:bold\">### Added\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#E36209\">-\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> Feature description\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>变更类型\u003C\u002Fstrong>（参考 \u003Ca href=\"https:\u002F\u002Fkeepachangelog.com\u002F#types\">Keep a Changelog 分类\u003C\u002Fa>）：\u003C\u002Fp>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>类型\u003C\u002Fth>\n\u003Cth>说明\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Added\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>新功能\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Changed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>现有功能变更\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Deprecated\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>即将弃用的功能\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Removed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>已移除的功能\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Fixed\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>错误修复\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>Security\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>安全漏洞\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch2 id=\"4.-%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.-%E5%8F%91%E5%B8%83%E6%B5%81%E7%A8%8B\">#\u003C\u002Fa> 4. 发布流程\u003C\u002Fh2>\n\u003Ch3 id=\"4.1.-%E7%89%88%E6%9C%AC%E9%80%92%E5%A2%9E%E4%B8%8E-changelog-%E6%9B%B4%E6%96%B0\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.1.-%E7%89%88%E6%9C%AC%E9%80%92%E5%A2%9E%E4%B8%8E-changelog-%E6%9B%B4%E6%96%B0\">#\u003C\u002Fa> 4.1. 版本递增与 CHANGELOG 更新\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> release:version\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>该命令执行以下操作：\u003C\u002Fp>\n\u003Col>\n\u003Cli>读取 \u003Ccode>.changeset\u002F\u003C\u002Fcode> 下的变更集文件\u003C\u002Fli>\n\u003Cli>根据变更类型（major\u002Fminor\u002Fpatch）递增各包的版本号\u003C\u002Fli>\n\u003Cli>自动更新各包的 \u003Ccode>CHANGELOG.md\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>清理已使用的变更集文件\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"4.2.-%E5%8F%91%E5%B8%83%E5%88%B0-npm\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.2.-%E5%8F%91%E5%B8%83%E5%88%B0-npm\">#\u003C\u002Fa> 4.2. 发布到 NPM\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> release:publish\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>该命令执行以下操作：\u003C\u002Fp>\n\u003Col>\n\u003Cli>构建所有包\u003C\u002Fli>\n\u003Cli>验证构建产物\u003C\u002Fli>\n\u003Cli>将各包发布到 NPM\u003C\u002Fli>\n\u003Cli>创建并推送 Git tags\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"4.3.-%E4%B8%80%E9%94%AE%E6%89%A7%E8%A1%8C%EF%BC%88%E7%89%88%E6%9C%AC%E9%80%92%E5%A2%9E-%2B-%E5%8F%91%E5%B8%83%EF%BC%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.3.-%E4%B8%80%E9%94%AE%E6%89%A7%E8%A1%8C%EF%BC%88%E7%89%88%E6%9C%AC%E9%80%92%E5%A2%9E-%2B-%E5%8F%91%E5%B8%83%EF%BC%89\">#\u003C\u002Fa> 4.3. 一键执行（版本递增 + 发布）\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> release:all\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>该命令依次执行 \u003Ccode>release:version\u003C\u002Fcode> 和 \u003Ccode>release:publish\u003C\u002Fcode>。适用于确认无冲突的常规发布场景。\u003C\u002Fp>\n\u003Ch3 id=\"4.4.-%E6%8F%90%E4%BA%A4\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#4.4.-%E6%8F%90%E4%BA%A4\">#\u003C\u002Fa> 4.4. 提交\u003C\u002Fh3>\n\u003Cp>发布完成后提交版本变更：\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -A\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\"> &#x26;&#x26; \u003C\u002Fspan>\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> commit\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -m\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"Release v&#x3C;version>\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"5.-%E5%8F%91%E5%B8%83%E5%89%8D%E9%AA%8C%E8%AF%81%E6%B8%85%E5%8D%95\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#5.-%E5%8F%91%E5%B8%83%E5%89%8D%E9%AA%8C%E8%AF%81%E6%B8%85%E5%8D%95\">#\u003C\u002Fa> 5. 发布前验证清单\u003C\u002Fh2>\n\u003Cp>发布前必须检查：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>[ ] TypeDoc 注释覆盖检查 (\u003Ccode>pnpm run docs:check\u003C\u002Fcode> 无报错)\u003C\u002Fli>\n\u003Cli>[ ] 所有包构建成功 (\u003Ccode>pnpm -r build\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>[ ] 所有测试通过 (\u003Ccode>pnpm -r test\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>[ ] TypeScript 类型检查通过 (\u003Ccode>pnpm -r typecheck\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>[ ] 代码格式检查通过 (\u003Ccode>pnpm lint\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>[ ] dist 文件存在：build 后 \u003Ccode>dist\u002Findex.js\u003C\u002Fcode> 和 \u003Ccode>dist\u002Findex.d.ts\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>[ ] CHANGELOG 完整：包含 \u003Ccode>[Unreleased]\u003C\u002Fcode> 章节和版本记录，采用先中文后英文的双语格式\u003C\u002Fli>\n\u003Cli>[ ] README 准确：版本正确，功能说明完整\u003C\u002Fli>\n\u003Cli>[ ] 已登录 npm (\u003Ccode>npm whoami\u003C\u002Fcode>)\u003C\u002Fli>\n\u003Cli>[ ] 当前分支为 main 分支\u003C\u002Fli>\n\u003Cli>[ ] 工作区干净，无未提交更改\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"6.-%E9%AA%8C%E8%AF%81%E5%8C%85%E5%86%85%E5%AE%B9\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.-%E9%AA%8C%E8%AF%81%E5%8C%85%E5%86%85%E5%AE%B9\">#\u003C\u002Fa> 6. 验证包内容\u003C\u002Fh2>\n\u003Ch3 id=\"6.1.-%E5%AE%89%E8%A3%85%E6%B5%8B%E8%AF%95\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.1.-%E5%AE%89%E8%A3%85%E6%B5%8B%E8%AF%95\">#\u003C\u002Fa> 6.1. 安装测试\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>安装正式版：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> @cmtx\u002Fcli\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>\u003Cstrong>安装特定版本：\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> @cmtx\u002Fcli@\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">versio\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">n\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"6.2.-%E6%A3%80%E6%9F%A5%E7%B1%BB%E5%9E%8B%E5%AE%9A%E4%B9%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#6.2.-%E6%A3%80%E6%9F%A5%E7%B1%BB%E5%9E%8B%E5%AE%9A%E4%B9%89\">#\u003C\u002Fa> 6.2. 检查类型定义\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 在临时目录安装并测试\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">mkdir\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \u002Ftmp\u002Ftest-cmtx\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#005CC5\">cd\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \u002Ftmp\u002Ftest-cmtx\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> @cmtx\u002Fcore@\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">versio\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">n\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 检查类型定义\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">head\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -20\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> node_modules\u002F@cmtx\u002Fcore\u002Fdist\u002Findex.d.ts\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 验证导出\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">node\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -e\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> \"import('@cmtx\u002Fcore').then(m => console.log(Object.keys(m)))\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"7.-%E6%9C%AC%E5%9C%B0%E6%B5%8B%E8%AF%95\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#7.-%E6%9C%AC%E5%9C%B0%E6%B5%8B%E8%AF%95\">#\u003C\u002Fa> 7. 本地测试\u003C\u002Fh2>\n\u003Ch3 id=\"7.1.-dry-run-%E9%A2%84%E8%A7%88\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#7.1.-dry-run-%E9%A2%84%E8%A7%88\">#\u003C\u002Fa> 7.1. Dry-run 预览\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> publish\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --dry-run\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"7.2.-verdaccio-%E6%9C%AC%E5%9C%B0%E6%B5%8B%E8%AF%95%EF%BC%88%E6%9C%AA%E6%9D%A5%E5%8F%AF%E9%80%89%EF%BC%89\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#7.2.-verdaccio-%E6%9C%AC%E5%9C%B0%E6%B5%8B%E8%AF%95%EF%BC%88%E6%9C%AA%E6%9D%A5%E5%8F%AF%E9%80%89%EF%BC%89\">#\u003C\u002Fa> 7.2. Verdaccio 本地测试（未来可选）\u003C\u002Fh3>\n\u003Cp>待项目稳定后，可使用 Verdaccio 进行更完整的发布测试：\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 安装 verdaccio\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> add\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> -g\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> verdaccio\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 启动本地 npm 仓库\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">verdaccio\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 配置 npm 指向本地仓库\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> set\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> registry\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> http:\u002F\u002Flocalhost:4873\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 发布到本地仓库\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">pnpm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> changeset\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> publish\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --no-git-tag\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 测试安装\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> install\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> @cmtx\u002Fcli@\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">versio\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">n\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 恢复默认 registry\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> set\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> registry\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> https:\u002F\u002Fregistry.npmjs.org\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch2 id=\"8.-%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#8.-%E6%95%85%E9%9A%9C%E6%8E%92%E9%99%A4\">#\u003C\u002Fa> 8. 故障排除\u003C\u002Fh2>\n\u003Ch3 id=\"8.1.-%E5%8F%91%E5%B8%83%E5%A4%B1%E8%B4%A5\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#8.1.-%E5%8F%91%E5%B8%83%E5%A4%B1%E8%B4%A5\">#\u003C\u002Fa> 8.1. 发布失败\u003C\u002Fh3>\n\u003Cp>如果发布中途失败：\u003C\u002Fp>\n\u003Col>\n\u003Cli>检查错误日志\u003C\u002Fli>\n\u003Cli>修复问题后重新运行发布命令\u003C\u002Fli>\n\u003Cli>Changesets 会跳过已发布的版本\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"8.2.-%E7%89%88%E6%9C%AC%E5%8F%B7%E5%86%B2%E7%AA%81\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#8.2.-%E7%89%88%E6%9C%AC%E5%8F%B7%E5%86%B2%E7%AA%81\">#\u003C\u002Fa> 8.2. 版本号冲突\u003C\u002Fh3>\n\u003Cp>确保没有其他人在同时发布，如有冲突：\u003C\u002Fp>\n\u003Col>\n\u003Cli>拉取最新代码：\u003Ccode>git pull\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>重新运行 version 命令\u003C\u002Fli>\n\u003Cli>重新发布\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"8.3.-git-tag-%E6%8E%A8%E9%80%81%E5%A4%B1%E8%B4%A5\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#8.3.-git-tag-%E6%8E%A8%E9%80%81%E5%A4%B1%E8%B4%A5\">#\u003C\u002Fa> 8.3. Git tag 推送失败\u003C\u002Fh3>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D\"># 手动推送 tags\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">git\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> push\u003C\u002Fspan>\u003Cspan style=\"color:#005CC5\"> --follow-tags\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Ch3 id=\"8.4.-%E5%A6%82%E4%BD%95%E6%92%A4%E9%94%80%E5%8F%91%E5%B8%83%EF%BC%9F\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#8.4.-%E5%A6%82%E4%BD%95%E6%92%A4%E9%94%80%E5%8F%91%E5%B8%83%EF%BC%9F\">#\u003C\u002Fa> 8.4. 如何撤销发布？\u003C\u002Fh3>\n\u003Cp>在 24 小时内可撤销：\u003C\u002Fp>\n\u003Cpre data-lang=\"bash\" class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1\">npm\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> unpublish\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\"> @cmtx\u002Fcore@\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">&#x3C;\u003C\u002Fspan>\u003Cspan style=\"color:#032F62\">versio\u003C\u002Fspan>\u003Cspan style=\"color:#24292E\">n\u003C\u002Fspan>\u003Cspan style=\"color:#D73A49\">>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>之后需要联系 npm support。\u003C\u002Fp>\n\u003Ch3 id=\"8.5.-%E5%8F%91%E5%B8%83%E5%A4%B1%E8%B4%A5%E5%B8%B8%E8%A7%81%E5%8E%9F%E5%9B%A0\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#8.5.-%E5%8F%91%E5%B8%83%E5%A4%B1%E8%B4%A5%E5%B8%B8%E8%A7%81%E5%8E%9F%E5%9B%A0\">#\u003C\u002Fa> 8.5. 发布失败常见原因\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>未登录或无权限：\u003Ccode>npm login\u003C\u002Fcode> 重新登录\u003C\u002Fli>\n\u003Cli>版本已存在：升级 package.json 中的版本号\u003C\u002Fli>\n\u003Cli>网络问题：检查网络连接，重试\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"9.-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3\" tabindex=\"-1\">\u003Ca class=\"header-anchor\" href=\"#9.-%E5%8F%82%E8%80%83%E6%96%87%E6%A1%A3\">#\u003C\u002Fa> 9. 参考文档\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fchangesets\u002Fchangesets\">Changesets 官方文档\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fkeepachangelog.com\u002Fen\u002F1.1.0\u002F\">Keep a Changelog\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fsemver.org\u002Fspec\u002Fv2.0.0.html\">Semantic Versioning\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fdocs.npmjs.com\u002Fcli\u002Fcommands\u002Fnpm-publish\">npm publish\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fpnpm.io\u002Fcli\u002Fpublish\">pnpm publish\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-005-publish-validation\u002F\">发布前校验与质量门禁指南\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fzh-Hans\u002Fcmtx\u002Fdev-guide\u002FDEV-008-changelog_guide\u002F\">Changeset 编写与 CHANGELOG 管理指南\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n",1786290224233]