Next.jsでPostCSSを設定する方法
デフォルトの動作
Next.jsは組み込みのCSSサポートのためにPostCSSを使用してCSSをコンパイルします。
設定なしで使用する場合、Next.jsは以下の変換を適用してCSSをコンパイルします:
- Autoprefixer がCSSルールにベンダープレフィックスを自動追加(IE11まで対応)
- クロスブラウザFlexboxのバグを修正し、仕様通りに動作
- 新しいCSS機能をIE11互換に自動コンパイル:
デフォルトでは、CSS Gridとカスタムプロパティ(CSS変数)はIE11向けにコンパイルされません。
IE11でCSS Grid Layoutを使用するには、CSSファイルの先頭に次のコメントを追加します:
以下の設定(折りたたまれています)でautoprefixerを構成することで、プロジェクト全体でIE11向けのCSS Grid Layoutサポートを有効にすることもできます。詳細は後述の「プラグインのカスタマイズ」を参照してください。
CSS Grid Layoutを有効にする設定を表示
CSS変数は安全にコンパイルできないため、コンパイルされません。変数を使用する必要がある場合は、Sass変数のようなSassでコンパイルされる機能の使用を検討してください。
ターゲットブラウザのカスタマイズ
Next.jsではBrowserslistを通じてターゲットブラウザ(Autoprefixerとコンパイル対象のCSS機能)を設定できます。
ブラウザリストをカスタマイズするには、package.json
に以下のようにbrowserslist
キーを追加します:
browsersl.istツールを使用して、対象ブラウザを可視化できます。
CSSモジュール
CSSモジュールをサポートするために特別な設定は必要ありません。CSSモジュールを有効にするには、ファイルの拡張子を.module.css
に変更します。
Next.jsのCSSモジュールサポートについて詳しくはこちらをご覧ください。
プラグインのカスタマイズ
警告: カスタムPostCSS設定ファイルを定義すると、Next.jsはデフォルトの動作を完全に無効化します。 Autoprefixerを含め、必要なすべての機能を手動で設定してください。 また、カスタム設定に含まれるプラグインは手動でインストールする必要があります(例:
npm install postcss-flexbugs-fixes postcss-preset-env
)。
PostCSS設定をカスタマイズするには、プロジェクトルートにpostcss.config.json
ファイルを作成します。
以下はNext.jsが使用するデフォルト設定です:
豆知識: Next.jsでは
.postcssrc.json
というファイル名や、package.json
のpostcss
キーからの読み込みもサポートしています。
環境に基づいてプラグインを条件付きで含めたい場合は、postcss.config.js
ファイルを使用してPostCSSを設定することも可能です:
豆知識: Next.jsでは
.postcssrc.js
というファイル名も使用可能です。
PostCSSプラグインのインポートにrequire()
を使用しないでください。プラグインは文字列として提供する必要があります。
豆知識:
postcss.config.js
が同じプロジェクト内の他の非Next.jsツールもサポートする必要がある場合は、相互運用可能なオブジェクトベースの形式を使用する必要があります: