公開

公開される内容

このプラグインは、ビルドの出力の git-diff-data/ に履歴を書き出す。

  • pages/:ページごとの版の一覧と、ページが存在したタグの時点の版
  • tags.json:書き出したタグの名前の一覧
  • log/:バージョンと言語ごとの最近のコミット
  • blobs/:上の 2 つが参照する、ページの各版のソース

これらは、差分を開くかどうかにかかわらず、誰でも取得できる静的なファイルになる。 ドキュメントから削除した文も、それを含む版の中では読める状態で残る。 古い版を公開したくない場合は、since にタグかコミットを指定する。 その時点より前の履歴は書き出さない。

コミットメッセージは加工してから書き出し、使うのは要約行だけである(コミットメッセージを参照)。 作者のメールアドレスは書き出さない。

CI でのビルド

浅いクローンでは履歴が途中で切れる。 このプラグインは浅いクローンを検出すると警告を出す。 ビルドの前に、全履歴とタグを取得しておく。

.github/workflows/docs.yml
- uses: actions/checkout@v4
  with:
    fetch-depth: 0
    fetch-tags: true

コミットしていない変更

このプラグインが読むのは、コミット済みの履歴だけである。 コミットしていないページの追加や編集は、コミットするまで履歴に現れない。

大きなサイト

出力は履歴とともに大きくなる。 git-diff-data/ には履歴にあるすべてのページのすべての版が入り、各ページの索引には、タグごとにその時点のページの版を記録する。 書き出す内容は、次の 2 つのオプションで絞れる。

  • tagPattern:?diff= で読み手に使ってほしいタグだけを記録する。設定しなければ、モノレポのパッケージのタグも含め、リポジトリのすべてのタグを全ページに記録する。tagPattern を設定せずに 20 を超えるタグを書き出すと、ビルドが警告を出す。
  • since:直近のメジャーリリースなど、あるタグかコミットより前の履歴を書き出さない。出力の大部分を占める古い版そのものが減る。

since を設定したときに書き出すのは、履歴の上で since の子孫にあたるタグだけである。 リリースのタグをリリース用のブランチに付けるリポジトリでは、リリースのタグを since にすると、その後のリリースのタグも除かれる。 後のタグは別のブランチにあり、since の子孫にならないためである。 この場合は、リリース用のブランチが分かれた main ブランチ上のコミットを since に指定する(git merge-base v2.0.0 main の出力など)。

例として、Rspack のドキュメント(374 ページ、1,212 コミット、リリースのタグはリリース用のブランチにある)で、tagPattern: /^v\d/ を設定して 2026 年 10 月に計測した大きさを示す。

sinceコミットgit-diff-data/書き出したタグ
なし1,21288.6 MiB239
v1.0.0(2024 年 8 月)90271.6 MiB1
v1.5.0(2025 年 8 月)54851.3 MiB1
v2.0.0(2026 年 4 月)27428.0 MiB1
git merge-base v2.0.0 main27428.1 MiB34

tagPattern を設定しなかった場合は、リポジトリの 402 個のタグがすべて記録され、git-diff-data/ は 91.3 MiB だった。 since 以降に変わっていないページは履歴を持たない。 v2.0.0 を指定した場合、374 ページのうち 18 ページがこれに当たった。

履歴の読み込みにかかる負荷を確かめるには、RSPRESS_GIT_DIFF_STATS=1 を設定してビルドする。 ビルドは、ログの読み込み、ページの内容の読み込み、データの組み立て、ファイルの書き出しの各段階について、所要時間、使用中のヒープ、件数を出力する。

RSPRESS_GIT_DIFF_STATS=1 rspress build