Color mode

Search notes

Filter with tag:, lang:, or path:.

増分ビルド(Incremental Build)

コンテンツ依存関係と保存済みのビルド状態を使い、変更された部分だけを再生成するビルドモードです。

役割

変更されていないコンテンツと出力の再処理を避けます。 記録済みの依存関係とビルド状態に依存します。

仕組み

前回のビルド以降に何が変わったかを確認し、必要な部分だけを処理します。 前回のビルド情報は.riebeckite/build/content-state.jsonに保存されます。 前回の情報がない場合、使えない場合、安全でないと判断された場合は、フルビルドを実行します。

状態の安全性

増分ビルドの状態による高速化がなくても、同じサイトを正しく生成できます。 状態が欠落しているか、非互換か、安全でない場合は、フルビルドの経路に入ります。

フィンガープリントの比較

増分ビルドは、保存済みのビルド状態(ContentBuildState)とフィンガープリントを比較して、何が変わったかを判断します。状態ファイル.riebeckite/build/content-state.jsonには、エントリごとのフィンガープリント、パイプラインのフィンガープリント、出力記述子が記録されます。各ビルドで、現在のフィンガープリントが保存済みの値と比較されます。

  • 変更なし:フィンガープリントが保存済みの値と一致 → エントリとその出力を再利用します。
  • 変更あり:フィンガープリントが異なる → エントリを再処理し、依存する出力を無効化します。

保存される状態には次が含まれます。

フィールド 説明
version ビルド状態のスキーマバージョン(現在は19)。
entries Record<string, ContentBuildEntry> — エントリごとのフィンガープリントと依存情報。
pipelineFingerprint コンテンツパイプライン(プラグイン、フィルターなど)のハッシュ。
outputs OutputDescriptor[] — 最後に生成した出力の一覧。
contentIndex Record<string, string> — slugからソースパスへの対応。

状態ファイルが欠落しているか、壊れているか、パイプラインのフィンガープリントが異なる場合は、フルビルドを実行します。


出力一覧の差分

増分ビルドのエンジンはOutputChangeSetを生成し、すべての出力を次の4つのカテゴリのいずれかに分類します。

カテゴリ 意味
affected 依存関係が変わったため再生成が必要な出力。
unchanged 関係する変更がないため再利用できる出力。
removed 前回のビルドには存在したが、現在は生成されない出力。
fullRegenerationRequired 外部依存関係の失敗やunknown型の依存関係により、完全な再構築が必要なことを示す真偽値のフラグ。

差分はdetermineOutputChangesが次を調べて計算します。

  • コンテンツごとのフィンガープリントの変化(content-state.jsonから)。
  • タグの変化(エントリへのタグの追加・削除)。
  • フォルダーパスの変化(ノートを別のディレクトリへ移した場合など)。
  • 外部依存関係のスコープの変化。
  • コンテンツエントリの追加・削除。

出力変更セットの例:

json
{
  "affected": [...],
  "unchanged": [...],
  "removed": [...],
  "fullRegenerationRequired": false,
  "candidateOutputCount": 120,
  "affectedOutputCount": 15,
  "removedOutputCount": 3,
  "unchangedOutputCount": 102
}

関連用語

さらに詳しく

Local Graph

Nearby Notes

Open in Explorer →
増分ビルド(Incremental Build)ビルド(Build)ビルド状態(Build State)キャッシュの無効化(Cache Invalidation)フィンガープリント(Fingerprint)ビルドシステムキャッシュ(Cache)フルビルド(Full Build)SSG(静的サイト生成)
CurrentOutgoingBacklink