bx-sites-build 是针对 bx-sites(ortus-boxlang/bx-sites)的构建与诊断技能,覆盖构建站点、本地服务、重建搜索索引、清理、环境体检、统计与内容审计等任务。
使用方式
每个命令都以 bxSites <verb> [options] 运行;在未安装 PATH shim 的环境(例如 CI runner)中则以 boxlang bxSites <verb> [options] 运行。每个动词都接受 --projectRoot=<path>。
build
bxSites build
把 docs/.md(或 src/)渲染为 site/ 中的静态站点,同时构建搜索索引(除非 search: false,或 searchProvider 被设为 algolia/pagefind 这类不使用本地索引的提供者,参见 bx-sites-search),在该提供者启用时对完成的 site/ 运行 pagefind CLI,并把主题与 docs/assets/ 复制到 site/。
多树构建(每个 docs/versions/<name>/ 和每个 docs/i18n/<code>/)会并行渲染这些树,而不是一个接一个地渲染,因此拥有多个语言/版本的站点成本约等于最慢的一棵树,而不是全部之和。任何并行树中的失败都会以真实错误浮出并使构建失败——它绝不会被吞掉变成一次“成功”运行,这在大型站点上很重要,因为出问题的那棵树未必是你正在关注的那棵。
serve
bxSites serve [--port=8080] [--host=127.0.0.1]
构建并在本地服务 site/,带实时重载。在前台运行直到被中断(Ctrl+C)。原生 BoxLang 文件监听器(不是轮询循环)会立即响应保存的更改,并且只重新转换实际发生变化的页面,而不是整个站点。
search-index
bxSites search-index
独立重建 site/search-index.json,不重新渲染页面也不复制资源——build 已经自动运行这一步;该动词用于只需要刷新索引的场景。它只覆盖主 docs/ 树,即使在带有 docs/versions//docs/i18n/ 的项目上也是如此——真正的构建会为每棵树写入各自作用域的索引。对 algolia/pagefind 搜索提供者是空操作(两者都不使用本地索引),参见 bx-sites-search。
clean
bxSites clean
删除 site/ 与任何构建缓存,保留 docs/ 和站点配置不动。
doctor
bxSites doctor
一次性环境/配置健康检查——即“提交 bug 报告前先运行这个”的动词。检查 JVM 版本、docs/ 是否存在、bxsites.yaml/.json 是否真正可解析且通过校验、所需的 BoxLang 模块(bx-markdown、bx-esapi、bx-yaml、bx-image)是否已安装并激活,以及——如果存在项目级 .theme/ 覆盖——它是否满足 layout.bxm/page.bxm 契约(参见 bx-sites-themes)。任一检查失败则退出码 1,否则为 0。这里不会修改项目。
stats
bxSites build bxSites stats
对已构建 site/ 的只读摘要报告(先运行 build)。报告内容:总页面/字数统计,以及在多于一棵树时(某个版本,或非默认语言)按树细分;存在的版本/语言名称;博客文章/分类/作者/活跃年份计数(无博客则为无);整个站点的不同标签数;搜索索引条目数与文件大小(搜索关闭或使用非本地提供者时为无);已构建 site/ 的总文件数与磁盘占用。始终退出码 0——纯信息性,不是通过/失败门禁(那是 audit 的职责)。
audit
bxSites build bxSites audit
对已构建 site/ 的 CI 级内容质量门禁(先运行 build)。检查:失效内部链接/图片——任何指向 site/ 中不存在页面或资源的 <a href>/<img src>,会使检查失败;缺失 alt 文本——任何完全没有 alt 属性的 <img>,而空的 alt=""(纯装饰性图片的正确标记)不会被标记,也会使检查失败;孤立页面——site/ 中无法从任一树自身首页沿链接到达的页面,仅为信息性,绝不会使检查失败——刻意排除在导航之外的页面(frontmatter hidden: true)本来就只应通过直接链接访问。当存在失效链接/图片或缺失 alt 图片时退出码 1,否则为 0(孤立页面从不会影响退出码)。它刻意只做内部链接检查——不发起 HTTP 请求检查外部 URL。
CI 级发布前门禁
bxSites build bxSites audit bxSites stats
audit 捕获失效内容;stats 在移交给 bx-sites-deployment 之前给出健全性检查摘要。原始 docs/ 源码的检查(lint/blog:drafts/blog:find/search:query)参见 bx-sites-content-quality,它们不需要先构建。
限制与注意事项
构建可能报告成功却产出破损输出:崩溃的 BoxLang 进程退出码不总能可靠地透过每个调用 shell 脚本传递。当修复在“成功”构建后似乎未生效时,不要只信任绿色的退出码——确认 site/ 确实用预期内容(重新)写入,并运行 doctor/audit 以捕获构建步骤本身未暴露的配置或内容问题。