用途:把 VitePress/GFM 的 Markdown 文档转换为 Azure DevOps Wiki 可正常渲染的格式。ADO Wiki 使用与 GFM、VitePress 不同的 Markdown 方言,直接发布会出现图表损坏、front matter 裸露、死链等问题,因此需要转换。
主要能力:生成 Node.js ESM 构建脚本(scripts/build-ado-wiki.js),仅使用 node:fs/promises、node:path、node:url 等内置模块。转换包括:将 ```mermaid 围栏改为 ::: mermaid;把 mermaid 内的 flowchart 改为 graph(保留 TD、LR 等方向);剥离 <br> 变体、把 4 个以上短横线的长箭头 ----> 改为 -->;删除文件开头的 YAML front matter;把父级相对链接(../)转为纯文本,保留同目录 .md 链接与外部 URL;可把 ::: tip/warning/danger/info 容器指令转为 > [!TIP] 等 ADO 提示块。脚本还会生成各目录的 .order 文件控制侧边栏顺序,并生成或修复 index.md 为真正的 wiki 首页。
使用方式:执行前先解析源仓库上下文——运行 git remote get-url origin,或询问用户是本地仓库还是远程仓库 URL;未解析前不得继续。转换结果为副本,输出到 dist/ado-wiki/ 并保持目录结构,图片等非 Markdown 文件按原相对路径复制,源文件永不修改。可通过 npm 脚本 build:ado 调用。跳过 node_modules、.vitepress、.git、dist、build、out、target 等目录。脚本结束时打印各类转换计数。
适用场景与限制:适用于任意 VitePress wiki 的 ADO 迁移。ADO Wiki(截至 2025 年)支持的 Mermaid 类型包括 graph、sequenceDiagram、gantt、classDiagram、stateDiagram、journey、pie、erDiagram、requirementDiagram、gitGraph、timeline;不支持 mindmap、sankey、quadrantChart、xychart、block。子图之间的链接不支持,但子图内节点可用。Mermaid 样式指令、加粗箭头 ==>、点线箭头 -.-> 可能被忽略或可用,保留原样;标准表格、引用、代码块、表情、同目录 .md 链接、外部 HTTP/HTTPS 链接、图片相对路径等本身兼容。