docmd 0.7.9 版本引入了 增量重建(Incremental Rebuilds) 以实现近乎瞬时的开发体验、OpenAPI 插件以及通过并行插件架构实现的重大性能优化。它还解决了关键的配置文件泄露问题,修复了 Monorepo Git 历史准确性,添加了贡献者头像,并实现了智能粘性页脚。

✨ 亮点

OpenAPI 插件

新的 OpenAPI 插件直接在 Markdown 页面中从 OpenAPI 3.x 规范文件渲染 API 参考文档——在构建时,无客户端 JavaScript,无第三方 UI 库(无 Swagger UI,无 Redoc)。

在任何 Markdown 中添加规范嵌入:

```openapi
./api/openapi.json
```

插件在构建时读取规范并输出静态 HTML:颜色编码的方法徽章、参数表格、请求/响应模式表格和状态码描述。支持 JSON 和 YAML 规范,解析内部 $ref 引用,处理 oneOf/anyOf 联合类型。

0.7.9 新功能: 添加了 download: true 选项,在 UI 中提供指向原始规范文件的直接链接——非常适合 GPT-4 或 Claude 等 AI 模型通过编程方式获取您的 API 文档。

docmd add openapi

详情请参阅 OpenAPI 插件文档

增量重建(瞬时开发模式)

开发服务器现在配备了**定向重建(Targeted Rebuild)**系统。此前,编辑单个 Markdown 文件会触发全站重建。对于拥有数百个页面的网站,这可能需要 10 秒以上的时间。

在 0.7.9 中,docmd dev 仅重新渲染您修改的特定文件。即使对于大型项目,页面重新加载现在也是瞬时的(<1s)。系统在这些部分更新期间能够正确维护所有导航、版本控制和资源上下文。

并行插件架构(多线程性能提升)

构建引擎已全面重构,支持并行插件执行。此前,onBeforeRender 等插件钩子是针对每个页面顺序执行的。对于执行 I/O 或启动子进程的插件(如 Git 插件),这是一个显著的性能瓶颈。

在 0.7.9 中,引擎现在采用并行分批处理页面渲染。结合采用非阻塞 execFile 调用的新版异步 Git 插件,拥有数百个页面的大型网站的构建速度提升了 3 倍

核心改进:

  • 分批渲染:生成器的第 3 阶段现在以 64 页为一批并行运行。
  • 异步钩子:所有插件钩子现在都支持 async,引擎会并行等待它们完成。
  • Git 插件重构:将同步的 execSync 替换为异步、非阻塞的进程生成。

插件 API — onBeforeRender 钩子和 sourcePath

插件作者现在可以在构建管道的新阶段挂钩:模板渲染前,完全访问页面上下文。

新的 onBeforeRender(page: PageContext) 钩子接收包含 sourcePath(始终设置)的完整页面上下文,以及可变的 frontmatterhtml

声明 build 能力以使用它。详情请参阅 创建插件 文档。

📝 完整更新日志

错误修复

  • Git 插件 — 多项目构建中的按文件提交历史:模块级单例状态被修复为每目录缓存,确保每个文件始终在其自己的仓库上下文中查询。在单项目、多项目、版本化和多语言配置中均正确。

  • Git 插件 — SPA 水合:修复为监听 docmd:page-mounted 事件,确保 SPA 导航后时间戳正确格式化。

新功能

  • OpenAPI 插件(@docmd/plugin-openapi:构建时 OpenAPI 3.x 规范渲染器,无客户端依赖。

  • 插件 API — onBeforeRender 钩子:在模板渲染前调用,接收包含 sourcePath 的完整 PageContext

  • 插件 API — PageContext 类型:从 @docmd/api 正式导出。

  • Git 插件 — 贡献者头像:提交历史工具提示现在显示 Gravatar 图像。

  • Git 插件 — 可配置日期格式:新的 dateFormat 选项:relative(默认)、isolocale-aware

  • 并行构建管道:生成器现在并行化模板渲染阶段。插件现在可以通过子进程在多个 CPU 核心上并发执行昂贵的操作(如 Git 调用或 OpenAPI 解析)。

  • 异步 Git 插件:Git 插件现在完全异步。它使用非阻塞子进程和路径规范化,确保在复杂的 monorepo 结构中也能保持高性能和准确性。

  • 增量重建系统:开发服务器现在执行定向部分构建。编辑文件仅重新渲染该文件,将大型网站的重新加载时间从 10s+ 缩短到 300ms 以下。

  • OpenAPI 插件 — 下载规范:新的 download 选项在页面页眉提供指向原始 JSON/YAML 规范的链接,方便 AI 访问。

  • UI — 智能粘性页脚:页脚现在始终使用 flex 布局固定在视口底部。(已修复)。

内部

  • 编辑链接路径解析:根据 Git 仓库根目录计算,而非 config.srcprocess.cwd()。在所有项目布局中均正确。

  • 配置加载器 — 硬化:实现了对孤立临时配置文件 (docmd.config-*.js) 的强制清理,并添加了 try-finally 安全保护以防止语法错误期间的文件泄露。