`@tailwindcss/vite` が Vite 8 に対応
@tailwindcss/vite パッケージの peerDependencies に ^8.0.0 を追加することで、Vite 8 との互換性が確保されました。パッケージ本体のコード変更はほぼ不要で、依存関係の宣言更新と統合テストの追加が主な変更内容です。
背景
Vite 8 のリリースに伴い、@tailwindcss/vite の peerDependencies が ^5.2.0 || ^6 || ^7 までしか対応していなかったため、Vite 8 環境でのインストールが失敗する問題が報告されていました。#19789 では、vite@8.0.0 と tailwindcss@4.2.1 を組み合わせようとすると npm が以下のエラーを返すことが報告されています。
npm error Could not resolve dependency:
npm error peer vite@"^5.2.0 || ^6 || ^7" from @tailwindcss/vite@4.2.1
peerDependency の宣言はパッケージの互換性境界を定義するものであり、実際のプラグインコードに変更が不要であっても、この宣言が古いままでは利用者がインストールすらできない状態に陥ります。
技術的な変更
本PRの核心は、packages/@tailwindcss-vite/package.json の peerDependencies に ^8 を追加する1行の変更です。
変更前:
"peerDependencies": {
"vite": "^5.2.0 || ^6 || ^7"
}
変更後:
"peerDependencies": {
"vite": "^5.2.0 || ^6 || ^7 || ^8"
}
あわせて、リポジトリ全体で使用する Vite のカタログバージョンも更新されています。pnpm-workspace.yaml の catalog セクションで vite: ^7.3.1 から vite: ^8.0.0 に切り替えられ、pnpm-lock.yaml 内の解決済みバージョンも 7.3.1 から 8.0.0 へと更新されています。
テスト面では、integrations/vite/index.test.ts の統合テストマトリクスに '8.0.0' が追加され、Vite 6・7 と同様に Vite 8 でもプラグインの動作が検証されるようになりました。また、integrations/vite/ssr.test.ts はリファクタリングされ、バージョンごとに重複していたテストコードが describe.each([['^5.3'], ['^6.0'], ['^7'], ['^8']]) のパラメータ化された構造に統合されています。
設計判断
プラグイン本体のコードを変更せずに Vite 8 対応が完了した点が、この変更の重要な特徴です。PR の説明にも「From the package's perspective, not a lot had to change」と明記されており、Vite 8 では @tailwindcss/vite が利用している API に破壊的変更がなかったことを示しています。
テストの構造変更も注目に値します。ssr.test.ts では、バージョンごとに独立して記述されていたテストケースを describe.each によるパラメータ化テストに一本化することで、新バージョン追加時のコスト(約158行の削除に対して62行の追加)を大幅に削減しています。今後 Vite 9 などが登場した際も、配列にバージョンを追記するだけで対応できる設計になっています。
まとめ
本PRは peerDependency の1行追加という最小限の変更で Vite 8 対応を実現しており、@tailwindcss/vite の API 安定性の高さを示しています。テストのパラメータ化によってバージョン互換性の継続的な検証コストも低減されており、今後の Vite メジャーバージョンアップへの対応がより迅速に行える基盤が整いました。