✨ 重点

一系列针对导航可移植性、预览环境和离线可用性的改进。无破坏性变更,无新增配置键。既有项目构建与发布方式保持不变。

🌐 上下文页面相对 URL 解析

为了确保构建站点的完整可移植性,版本、语言和项目切换器现在优先使用页面相对链接(./../),而不是依赖绝对基础路径的链接。
这使得在不同的部署上下文(如本地预览文件夹、子路径部署(例如 GitHub Pages)和根目录部署)之间进行一致的导航而无需更改配置。

🐛 修复:本地开发服务器上的切换器重定向不匹配

在生产部署使用自定义基础路径(例如 /beta-test/i18n/)的 Workspace 配置中,开发服务器从 /i18n/ 提供服务。此前,客户端 JS 使用构建期的基础路径(window.DOCMD_BASE)来路由语言和版本更改,导致重定向损坏,例如 localhost:3000/beta-test/i18n/de/

修复方案: docmd-main.js 中的切换器现在在运行时动态分析浏览器当前的 window.location.pathname。如果当前 URL 中不存在 Workspace 基础路径前缀(例如 /beta-test/),则会自动从路由计算中剥离该前缀,从而确保无缝的本地开发环境语言/版本切换。

🔗 菜单栏与横幅的 SPA 导航同步

此前,在 SPA 页面过渡期间,顶部的菜单栏(.docmd-menubar)、公告横幅(.docmd-banner)和 Cookie 同意横幅(.docmd-cookie-banner)并没有在 DOM 中进行替换更新。在嵌套于不同目录深度的页面上,这导致这些布局组件内部的相对 URL 解析不正确(例如,从双重嵌套的目录中解析 ../containers/)。

修复方案: 这些外部布局组件现在已被添加到 SPA 的 selectorsToSwap 列表中。它们在每次客户端页面加载时进行动态更新,以确保相对导航链接和策略 href 能够正确匹配活动页面的相对深度。

🔌 CLI --offline 模式

引入了新的 CLI --offline 标志,专门用于纯离线文档查看:

  • 绕过索引构建: 停止关键词/语义搜索索引的构建,并阻止下载语义搜索的二进制依赖,从而在离线时大幅加快构建过程。
  • 浏览器内追加后缀: 强制在所有页面相对链接上追加 .html 后缀,以便在 file:// 协议下进行干净的导航。
  • 本地化离线搜索提示: 在搜索弹窗中注入本地化提示,告知用户离线构建中无法使用搜索。

🧹 依赖清理与维护

  • 删除了内部包依赖树中已弃用的子依赖(例如 booleannode-domexception)。
  • 审计了可选插件,确认 @docmd/plugin-math 对核心是可选的,仅在 @docmd/live 处于活动状态时才会被自动安装/要求。

📦 升级

upgrade
npx @docmd/core@0.8.17 build