バージョン管理ツールJujutsuに対応
Tailwind CSSは、Jujutsu(jj)のリポジトリディレクトリ .jj をコンテンツスキャンの対象外に追加しました。これにより、Git、Mercurial、Subversionに続く4つ目のバージョン管理システムとして、Jujutsuユーザーの開発体験が向上します。
背景
Tailwind CSSは、プロジェクト内のファイルをスキャンしてクラス名を抽出する際、バージョン管理システムのメタデータディレクトリを自動的に除外しています。これまで .git、.hg(Mercurial)、.svn(Subversion)が除外対象でしたが、Jujutsu(jj)は対象外でした。#19687 は、Jujutsuユーザーにも同等のスキャン最適化を提供します。
バージョン管理ディレクトリには大量のファイルが含まれますが、これらはビルド対象のソースコードではありません。スキャン対象から除外することで、ビルド時間の短縮とメモリ使用量の削減につながります。
技術的な変更
crates/oxide/src/scanner/fixtures/ignored-content-dirs.txt に .jj エントリが追加されました。このファイルは、コンテンツスキャナーが無視すべきディレクトリ名のリストを定義しています。
変更内容:
.git
.hg
-.svn
-node_modules
-.yarn
-.venv
-venv
+.jj
.next
-.turbo
.parcel-cache
-__pycache__
-.svelte-kit
.pnpm-store
+.svelte-kit
+.svn
+.turbo
+.venv
.vercel
+.yarn
+__pycache__
+node_modules
+venv
.jj の追加に加えて、ファイル全体がアルファベット順にソートされました。これにより、.git、.hg、.jj、.svn といったバージョン管理ツールのディレクトリが先頭にまとめられています。
除外対象リストには、他にも以下のディレクトリが含まれています:
-
フレームワーク固有:
.next(Next.js)、.svelte-kit(SvelteKit)、.vercel(Vercel) -
ビルドツール:
.turbo(Turborepo)、.parcel-cache(Parcel) -
パッケージマネージャー:
node_modules、.yarn、.pnpm-store -
Python環境:
.venv、venv、__pycache__
これらはいずれもビルド成果物や依存関係の保存場所であり、Tailwindのクラス名抽出対象として不適切なディレクトリです。
設計判断
既存の除外リストへの追加 という、一貫性のあるアプローチが採用されました。
PRの説明では「just like .git, .hg, .svn」と明記されており、他のバージョン管理システムと同等の扱いをする意図が示されています。新しい設定項目やオプションを追加するのではなく、既存の無視リストを拡張することで、実装の複雑さを増やさずにサポートを追加しています。
ファイル全体のアルファベット順ソートも同時に行われました。新しいエントリを適切な位置に挿入しやすくなり、重複チェックも容易になると考えられます。
まとめ
本PRは、新しいバージョン管理ツールJujutsuへの対応を追加した変更です。既存の除外リストに .jj を追加するだけのシンプルな変更ですが、Jujutsuユーザーにとってはビルドパフォーマンスの改善と、他のバージョン管理システムと同等の扱いを受けられるという意味で重要な更新となります。