`@tailwindcss/webpack` が Rspack のオプショナルピア依存として `@rspack/core` を追加
@tailwindcss/webpack パッケージに @rspack/core をオプショナルピア依存として追加し、Rspack プロジェクトへのインストール時に webpack が必須でなくなりました。ローダー実装自体は変更されておらず、Rspack の webpack 互換ローダー API を介してそのまま動作します。
背景
これまで @tailwindcss/webpack の peerDependencies には webpack: "^5" のみが定義されており、Rspack プロジェクトへ導入する場合でも webpack を必須ピア依存として要求していました。Rspack は webpack 互換の API を提供しているためローダー自体はすでに動作していましたが、パッケージマネージャーが不要な webpack のインストールを強制する問題がありました。
実際の動作確認は rstack-examples として公開されており、Rspack での利用が既に可能な状態でした。このPRはその実態をパッケージメタデータに正式に反映させるものです。
技術的な変更
package.json の peerDependencies および peerDependenciesMeta フィールドを変更し、webpack と @rspack/core の両方をオプショナルピア依存として定義しました。
変更前:
"peerDependencies": {
"webpack": "^5"
}
変更後:
"peerDependencies": {
"@rspack/core": "^1.0.0 || ^2.0.0",
"webpack": "^5.0.0"
},
"peerDependenciesMeta": {
"@rspack/core": {
"optional": true
},
"webpack": {
"optional": true
}
}
変更のポイントは2点あります。第一に、@rspack/core を ^1.0.0 || ^2.0.0 の範囲でサポート対象として明示しました。第二に、従来の webpack も含め両エントリを peerDependenciesMeta で optional: true に設定しています。これにより、webpack のみを使うプロジェクト・Rspack のみを使うプロジェクトのどちらでも、不要な側のパッケージを強制されずにインストールできます。
なお、ローダーの実装コードは一切変更されていません。Rspack が webpack 互換ローダー API を提供しているため、既存のテストスイートがそのまま両バンドラーの動作カバレッジを担います。
設計判断
ローダー実装を変更せず、パッケージメタデータの修正のみ で Rspack サポートを実現した点が本PRの核心です。
peerDependenciesMeta を用いたオプショナル化は、npm/pnpm/Yarn いずれでも広くサポートされている標準的な手法です。webpack 側も同時にオプショナルへ変更することで、「どちらか一方があれば動く」という意図をパッケージマネージャーに正確に伝えています。もし webpack を必須のまま残してしまうと、Rspack のみの環境では依然として警告が出るため、両方をオプショナルにすることが整合的な選択です。
Rspack 専用のテストを追加しなかった判断もこの方針と一致しています。API 互換性に基づくアプローチであるため、既存の webpack ローダーテストがそのまま Rspack パスの検証として機能するという前提が成り立ちます。
まとめ
本PRは、すでに動作していた Rspack サポートをパッケージメタデータに正式に反映した変更です。peerDependenciesMeta を活用して両バンドラーをオプショナル化することで、ローダー実装に一切手を加えずに依存関係の宣言を実態に合わせた、最小限かつ整合性の高いアプローチといえます。