Doctor
blume doctor は、ビルドの前に設定とコンテンツの問題を診断します。対象は設定、すべてのページ、Node のバージョン、サーバーを必要とする機能です。
blume doctor は、blume build とまったく同じ方法でプロジェクトをスキャンし、何も生成・ビルドせずに見つかった問題を報告します。はっきりしない理由でビルドが失敗したときに最初に実行すべきコマンドです。また、CI に組み込む低コストなチェックとしても役立ちます。
blume doctor
blume init は、このコマンドを doctor スクリプトとして package.json にも追加します。pnpm を使う場合は、pnpm run doctor(モノレポのルートからは pnpm --filter <workspace> run doctor)として実行してください。単に pnpm doctor と実行すると、スクリプトではなく pnpm に組み込まれた doctor コマンドが実行されます。
チェック内容
- Node のバージョン: インストールされている
blumeパッケージがサポートする範囲と照合します。範囲はパッケージ自身のenginesフィールドから読み取ります。範囲外のバージョンは警告になります。動作する可能性はありますが、Blume がテストしている組み合わせではありません。 blume.config.ts: ビルド時と同じ検証を行います。削除されたキーや名前が変わったキーは、単なる「unrecognized key」ではなく、置き換え先を示すヒント付きのエラーになります。- すべてのコンテンツページとフォルダーのメタ:
blume devとblume buildがプロジェクトの読み込み時に出力する診断を、1 つのレポートにまとめます。無効なフロントマター、解析できない.mdx、ナビゲーションの問題、見つからないインクルード先などが含まれます。 - どこにもつながらないナビゲーション: タブ、セレクターの項目、注目リンク、ヘッダーアクション、コールトゥアクションのうち、パスがどのページ、カスタムの
.astroページ、生成されたルート、リファレンス、public/内のファイル、Blume が生成するファイルにも一致しないものが対象です。blume devやblume buildが出力するのと同じ警告(BLUME_NAV_MISSING_PAGE)になります。タブについては、実際のリンク先がチェックされます。hrefがあればhref、なければpathです。 - 存在しない
<Component>の例:examples配下のどのファイルも指していないpathが対象です。このようなページには「No example found」というボックスが表示されます。blume devやblume buildと同様に、該当する行で警告(BLUME_EXAMPLE_NOT_FOUND)になります。Componentという名前のcomponents.tsのオーバーライドやアイランドは組み込みのコンポーネントを置き換えるため、チェックの対象外です。 - サーバーを必要とする機能: 静的出力用に設定されたサイトで、アシスタント、MCP サーバー、Try it プレイグラウンドの組み込みプロキシ、サーバーモードの検索(Mixedbread)を使っている場合が対象です。機能名と切り替え先のデプロイアダプターを示すエラーになります。ホストアダプターに
output: "static"が設定されている場合は、そのオプションを削除するよう案内します。 - 設定に必要なのにインストールされていないパッケージ: 検索、コンテンツソース、アシスタント、ナレーションの各アダプターがインポートする SDK、デプロイアダプターの
@astrojs/*パッケージ、Vue や Svelte のアイランド用レンダラーが対象です。各パッケージ名と、お使いのパッケージマネージャー用のインストールコマンドを示すエラーになります。blume buildも同じチェックで停止します。 - Blume が解析できない
components.tsのオーバーライド: インラインのエントリ、計算で求めるエントリ、存在しないファイルをインポートしているエントリが対象です。それぞれ該当する行でエラーになります。 - バージョン形式のフォルダー(
v1.0/):versionsが設定されていないサイトでは、このフォルダーは通常のコンテンツとしてビルドされてしまいます。blume versionを案内する警告になります。 - 有効な機能が読み取るのに設定されていないシークレット:
MIXEDBREAD_API_KEYやOPENROUTER_API_KEYなどが対象です。変数名を示す警告になります。doctor はblume devやblume buildと同様に、最初に.envと.env.localを読み込みます。また、リモートのコンテンツソースが取得を始める前にチェックするため、その後トークンがないことでソースが失敗した場合でも警告は出力されます。
サマリー
doctor は診断結果の後に、プロジェクトが最終的にどう解決されたかを出力します。設定したつもりの内容と Blume が認識している内容が食い違っていれば、ひと目でわかります。出力される項目は次のとおりです。ページ数、出力モードとデプロイアダプター、検索プロバイダー、設定済みのリファレンス・アナリティクス・コンテンツソースの各アダプター、アシスタントが有効かどうかと使用しているバックエンドです。
終了コードと JSON
doctor はエラーの診断があると 0 以外の終了コードで終了します。そのため、ビルドが失敗するのと同じ問題で CI も失敗します。警告は報告されますが、失敗にはなりません。--json を指定すると、ターミナル向けのレポートの代わりに、診断を JSON として標準出力に出力します。形式は blume validate --json と同じです。