`@tailwindcss/webpack` が Rspack のオプショナルピア依存として `@rspack/core` を追加

tailwindlabs/tailwindcss

@tailwindcss/webpack パッケージに @rspack/core をオプショナルピア依存として追加し、Rspack プロジェクトへのインストール時に webpack が必須でなくなりました。ローダー実装自体は変更されておらず、Rspack の webpack 互換ローダー API を介してそのまま動作します。

背景

これまで @tailwindcss/webpackpeerDependencies には webpack: "^5" のみが定義されており、Rspack プロジェクトへ導入する場合でも webpack を必須ピア依存として要求していました。Rspack は webpack 互換の API を提供しているためローダー自体はすでに動作していましたが、パッケージマネージャーが不要な webpack のインストールを強制する問題がありました。

実際の動作確認は rstack-examples として公開されており、Rspack での利用が既に可能な状態でした。このPRはその実態をパッケージメタデータに正式に反映させるものです。

技術的な変更

package.jsonpeerDependencies および 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 も含め両エントリを peerDependenciesMetaoptional: true に設定しています。これにより、webpack のみを使うプロジェクト・Rspack のみを使うプロジェクトのどちらでも、不要な側のパッケージを強制されずにインストールできます。

なお、ローダーの実装コードは一切変更されていません。Rspack が webpack 互換ローダー API を提供しているため、既存のテストスイートがそのまま両バンドラーの動作カバレッジを担います。

設計判断

ローダー実装を変更せず、パッケージメタデータの修正のみ で Rspack サポートを実現した点が本PRの核心です。

peerDependenciesMeta を用いたオプショナル化は、npm/pnpm/Yarn いずれでも広くサポートされている標準的な手法です。webpack 側も同時にオプショナルへ変更することで、「どちらか一方があれば動く」という意図をパッケージマネージャーに正確に伝えています。もし webpack を必須のまま残してしまうと、Rspack のみの環境では依然として警告が出るため、両方をオプショナルにすることが整合的な選択です。

Rspack 専用のテストを追加しなかった判断もこの方針と一致しています。API 互換性に基づくアプローチであるため、既存の webpack ローダーテストがそのまま Rspack パスの検証として機能するという前提が成り立ちます。

まとめ

本PRは、すでに動作していた Rspack サポートをパッケージメタデータに正式に反映した変更です。peerDependenciesMeta を活用して両バンドラーをオプショナル化することで、ローダー実装に一切手を加えずに依存関係の宣言を実態に合わせた、最小限かつ整合性の高いアプローチといえます。

記事メタデータ

Generated by:
Claude Sonnet 4.6 for DiffDaily
LLM Trace:
e55faaf3

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

記事構成 ✓ PASS

Title, Context, Technical Detailの存在と明確さ

リード文(総論)→背景・技術詳細・設計判断(各論)→まとめ(結論)という「総論→各論→結論」の構成が明確で、非常に分かりやすいです。

カスタムMarkdown構文 ✓ PASS

シンタックスハイライト・GitHubリンク記法の正確性

ファイル名付きシンタックスハイライト(```json:path/to/file.json```)やPR番号のリンク記法([#20027](URL))がガイドライン通り正しく使用されています。

対象読者への適合性 ✓ PASS

エンジニア向けの適切な技術レベルと表現

「peerDependencies」「Rspack」「webpack」などの専門用語を前提としており、専門知識を持つエンジニアという対象読者に適合した内容です。

パラグラフ・ライティング ✓ PASS

トピックセンテンス・1段落1トピック・段落長

各セクションが総論・各論・結論の構造を持ち、各段落がトピックセンテンスで始まるなど、パラグラフ・ライティングの原則が守られており、可読性が高いです。

Diff内容との照合 ✓ PASS

コードブロックとDiff内容の一致

記事内のコードブロック(変更前後の`package.json`)は、提供されたDiffの内容を正確に反映しています。

技術用語の正確性 ✓ PASS

技術用語の正確な使用

「peerDependenciesMeta」「optional peer dependency」などの技術用語が、PRの内容と文脈に沿って正確に使用されています。

説明の技術的正確性 ✓ PASS

技術的主張の正確性と論理性

「ローダー実装は変更されていない」「`peerDependenciesMeta`でオプショナル化した」といった説明は、PR DescriptionやDiffの内容と一致しており、技術的に正確です。

事実の突合 ⚠ WARNING

PR情報による主張の裏付け(ハルシネーション検出)

一部の記述(`peerDependenciesMeta`が標準的手法であることなど)はPRに明記されていませんが、技術的に自明な補足説明の範囲内です。

数値・固有名詞の確認 ✓ PASS

PR番号・コミットID・バージョン等の正確性

PR番号(#20027)やバージョン指定(`^1.0.0 || ^2.0.0`)などの数値・固有名詞はすべて正確です。

タイトル・説明との一致 ✓ PASS

記事タイトル・説明とPR内容の一致

記事のタイトルは、PRのタイトル「Add Rspack optional peer dependency for @tailwindcss/webpack」の内容を的確に要約しており、整合性が取れています。

外部知識の正確性 ⚠ WARNING

PRに記載のない外部知識(LTS、サポート状況など)の不使用

`peerDependenciesMeta`が標準的な手法であるという言及はPR外の知識ですが、捏造ではなく文脈を補強する妥当な解説です。

時間表現の正確性 ✓ PASS

時間表現がPR情報と一致しているか

PR Descriptionの「already works」という表現を、記事で「すでに動作していた」と正確に反映しており、時間表現に誤りはありません。