Tailwind CSSの@apply
ディレクティブが処理されず、そのまま出力されてしまう現象に出くわした。
該当のコードは、メインのCSSファイルからインポートした、サブのCSSファイルに記述されている。試しにメインのCSSファイルに該当の記述をコピペすると、正しく変換された。
@apply
ディレクティブは、メインのCSSファイル(エントリポイント)でしか機能しないのだろうか。そんなバナナなハナシがあるはずない。いつものように、初歩的な何かに躓いているのだ。
postcss-importプラグインで解決
バンドルにはwebpackを使っている。CSS関連で使っているローダーは、style-loader
とcss-loader
とpostcss-loader
である(postcss-loader
は、Tailwind CSSの公式サイトにある案内の通りにインストールした)。
インポートしたCSSファイルの@apply
がそのまま出力される一方、メインのCSSファイルに書いた@apply
は変換されている。エラーは出ていない。ということは、Tailwindのビルドプロセスでは@import
が処理されていない可能性が高い。どうやらpostcss-loader
は、@import
を処理してくれないようだ。
ダメもとでcss-loader
とpostcss-loader
の順番を入れ替えてみたが、やっぱりダメだった。postcss-loader
で構文エラーが出る。
調べてみると、PostCSSにはimport文を扱うためのpostcss-importプラグインがあった。これをインストールしたところ、インポートしたファイルに含まれる@apply
ディレクティブが正しく処理された。
手順は下記の通りである。
postcss-importのインストール
portcss.config.jsの設定
珍しくChat-GPT4に聞いてもすぐに解決できない問題だった。最初にTailwind CSSを主題にして尋ねたせいだと思う。
というか、そもそも今日に至るまでPostCSSをほぼ意識したことがなかった。さっきまでPortCSSと誤読していたくらいだ。いつだって足元が疎かで、見事にすくわれる。
反省、反省。