🦘
🛠️ Tailwind CSS と PostCSS の関係
-
PostCSS は「変換エンジン」
- PostCSS は、CSS を加工・変換するためのツールだよ。
- ただのエンジンなので、プラグインを使って実際の機能を追加する必要があるんだ。
-
Tailwind CSS は「PostCSS のプラグイン」の一つ
- Tailwind CSS 自体が PostCSS 用のプラグインとして提供されているよ。
- Tailwind CSS は、HTML や JSX の中で使われているクラス (
bg-red-500
やp-4
など) を見つけて、それに対応する CSS を生成する役割を持っているんだ。
🔗 具体的な処理の流れ
1. 設定ファイルの準備
// postcss.config.js
module.exports = {
plugins: {
tailwindcss: {}, // Tailwind CSS を PostCSS プラグインとして登録
autoprefixer: {}, // (必要なら)ベンダープレフィックスを追加
},
};
-
tailwindcss: {}
と書くことで、PostCSS が Tailwind CSS を使って CSS を変換するように指示するよ。
2. グローバルCSSで Tailwind CSS をインポート
/* global.css */
@tailwind base; /* リセットCSSなど、基本スタイル */
@tailwind components; /* プリセットコンポーネントスタイル */
@tailwind utilities; /* Tailwindのユーティリティクラス */
- ここで書かれた
@tailwind
ディレクティブが、PostCSS を通して実際のCSSに変換されるんだ。
3. Tailwind CSS と PostCSS の連携
💡 PostCSS の変換フロー
1. global.css を読み込む
↓
2. Tailwind CSS プラグインが発動
- tailwind.config.ts を参照して、カスタム設定を取得
- content プロパティで指定されたファイルをスキャン
- 使用されているクラスに対応するCSSを生成
↓
3. Autoprefixer プラグインが発動(オプション)
- display: flex → -webkit-flex など、古いブラウザ対応のプレフィックスを追加
↓
4. 最終的なCSSファイルを出力
4. 最終的に生成されるCSS
例えば、HTMLでこんなコードがあったとする:
<div class="bg-red-500 p-4">
こんにちは、Tailwind CSS!
</div>
PostCSS を通した後、生成されるCSSはこんな感じになるよ:
/* Tailwind CSS によって自動生成されたCSS */
.bg-red-500 {
background-color: #f56565;
}
.p-4 {
padding: 1rem;
}
/* Autoprefixer によるベンダープレフィックス追加 */
body {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
🤔 じゃあ、PostCSS を経由しないとどうなるの?
-
@tailwind base
などが そのまま文字列 として表示されちゃう。 - Tailwind のユーティリティクラス(例:
bg-red-500
やp-4
)が 機能しない。 - Tailwind CSS のカスタム設定(
tailwind.config.ts
で設定したカスタムカラーなど)も 反映されない。
✅ まとめ
- Tailwind CSS は、PostCSS の「プラグイン」として動作するよ。
- PostCSS → Tailwind CSS プラグイン → 変換されたCSS という流れ。
- PostCSS は、CSSのビルドエンジンとして機能して、Tailwind CSS のクラスを正しく変換してくれるんだ。
Discussion