blume doctor 与 blume build 完全一样地扫描项目并报告发现的问题,不生成也不构建任何东西。当构建因为某个不明显的原因失败时,第一个该运行的就是它;它也是一道放进 CI 的廉价关卡:
blume doctor
检查内容#
- Node 版本与已安装的
blume包所支持的版本范围是否吻合,这个范围读自它自己的engines字段。超出该范围是一个警告:可能照样能跑,但它不属于 Blume 测试过的组合。 blume.config.ts,执行与构建完全相同的校验。被移除或改名的键会带着指明替代项的提示而失败,而不是只丢一句“无法识别的键”。- 每一个内容页面和文件夹元数据:
blume dev与blume build在加载项目时会打印的那些诊断——frontmatter 无效、导航问题、include 目标缺失等等——全部汇总成一份报告。 - 需要服务端的功能出现在一个配置为静态输出的站点上——助手、MCP 服务器、Try it playground 内置的代理,或服务端模式的搜索(Mixedbread):给出一个指明该功能的错误,并说明应当切换到哪个部署适配器(如果宿主适配器被设成了
output: "static",则提示你去掉这个选项)。 - 配置需要却没有安装的包——某个搜索、内容源或助手适配器所导入的 SDK,某个部署适配器的
@astrojs/*包,或 Vue、Svelte 交互岛所需的渲染器:逐个给出指明包的错误,并附上适合你所用包管理器的安装命令。blume build在同一项检查上会直接停下。 - Blume 无法预先分析的
components.ts覆盖项——内联的或计算得来的条目,或者指向一个并不存在的文件的 import:每一处都给出一个错误,并标明它所在的行。 - 在没有配置
versions的站点上出现形似版本的目录(v1.0/)——否则它会被当作普通内容构建:给出一个指向blume version的警告。 - 已启用的功能会读取、却并未设置的密钥,例如
MIXEDBREAD_API_KEY或OPENROUTER_API_KEY:给出一个指明变量名的警告。和blume dev、blume build一样,doctor 会先加载.env和.env.local。
摘要#
诊断之后,doctor 会打印项目最终解析出的配置,这样你以为自己配好的东西与 Blume 实际看到的东西之间的落差就一目了然:页面数量、输出模式与部署适配器、搜索服务、已配置的参考文档、分析、内容源适配器,以及助手是否开启、它用的是哪个后端。
退出码与 JSON#
存在 error 级诊断时 doctor 以非零码退出,因此凡是会卡住构建的问题它都会卡住 CI;警告只作报告,不会失败。--json 会把诊断以 JSON 输出到 stdout,替代终端报告,结构与 blume validate --json 相同。