Skip to content
Latchkey

PostCSSとは何か? プラグインでCSSを変換する

PostCSSは、CSSを構造へとパースし、その上でプラグインを実行するツールで、autoprefixing・minification・モダンな構文のサポートといった変換を可能にします。

独自の言語を持つプリプロセッサとは異なり、PostCSSはプレーンなCSSを対象に動作します。スタイルシートをパースし、それをプラグインのチェーンに渡し、変換されたCSSを書き戻します。すべてがプラグインであるため、必要な変換だけをちょうど組み立てられます。これは現代のCSSパイプラインでほぼ普遍的な要素であり、CIではbuildステップとして実行されます。

PostCSSの仕組み

PostCSSはCSSをノードツリーへとパースし、設定された各プラグインを実行してそのツリーを変更し、それをCSSへと文字列化して戻します。プラグインのpipelineこそが、PostCSSに柔軟性を与えるものです。

一般的なプラグイン

  • Autoprefixerはbrowser targetに基づいてベンダープレフィックスを追加します。
  • cssnanoは出力をminifyします。
  • postcss-preset-envは将来のCSSを今日から使えるようにします。
  • 多くの構成でTailwindはPostCSSプラグインとして実行されます。

Autoprefixingとbrowser target

Autoprefixerはブラウザのサポートリストを読み取り、どのプレフィックスを追加するかを判断します。targetのリストを変えれば出力されるプレフィックスも変わり、これによりCSSの出力はJSのpolyfillを動かすのと同じ設定に結び付けられます。

buildのどこに位置するか

PostCSSは通常、(もしあれば)プリプロセッサの後、そしてbundlingの一部として実行されるため、最終的なCSSは公開される前にプレフィックス付与・モダン化・minifyされます。バンドラーはこれを統合し、自動的に実行されるようにします。

CI/CDにおけるPostCSS

Autoprefixerはブラウザのデータに依存するため、browser targetとブラウザデータのバージョンをリポジトリで固定することで、CIの出力は実行をまたいで再現可能に保たれます。変換・ハッシュ化されたCSSはデプロイ可能なartifactの一部であり、キャッシュによって変更されていないスタイルシートの再処理を避けられます。

重要なポイント

  • PostCSSは、JavaScriptプラグインのチェーンを通じてプレーンなCSSを変換します。
  • Autoprefixerとminificationのプラグインが最も一般的な用途です。
  • browser targetを固定することで、PostCSSの出力はCIで再現可能に保たれます。

関連ガイド