PurgeCSSでCSSを軽量化する

Bootstrapのsassを読み込んで出力したcssファイルが240KBくらいあるので、不要なスタイルを削除するPugeCSSを試したときの覚書。

開発サーバー環境: CentOS Stream 8, PurgeCSS 4.1.3, Bootstrap 5.1.3, WordPress 6.0.1
開発クライアント環境: Windows10, PhpStorm 2022.1.3

開発はWindowsから仮想マシン上の共有ファイルをPhpStormで編集している。
そしてPhpStormのFile Watchersの機能でBootstrapの各sassを読み込んで一つのCSSファイルを出力している。


PurgeCSSのインストール

公式サイトを参考に。

まずはコマンドラインで試してみる。
npmでインストール。
# npm install -g purgecss

WordPressのテーマに移動してビルドしてみる。
# cd /home/httpd/project/wordpress/wp-content/themes/sidebar/
# purgecss --css assets/css/main.css --content ./**/*.php --output assets/css/main.min.css

cssファイルは17KBまで小さくなった。
main.min.cssを読み込むようにして、ブラウザで確認してみる。



設定ファイルを作る

プラグインなどPurseCSSに解析してほしいファイルを設定ファイルで定義する。

PHPで動的に生成するスタイル名はsafelistに記述する。

プロジェクトのトップで作業。
# cd /home/httpd/project/
# vi purgecss.config.js

module.exports = {
  content: [
    './wordpress/wp-content/themes/sidebar/*.php',
    './wordpress/wp-content/themes/sidebar/**/*.php',
    './wordpress/wp-content/plugins/hoge/templates/*.php',
    './wordpress/wp-content/plugins/hoge/templates/**/*.php'
  ],
  css: [
    './wordpress/wp-content/themes/sidebar/assets/css/main.css'
  ],
  output: './wordpress/wp-content/themes/sidebar/assets/css/main.min.css',
  safelist: [
    /^page/,
    /^slug/
  ]
}

実行する。
# purgecss --config ./purgecss.config.js

cssファイルは70KBになった。

modal-backtop, offcanvas-backtopなどJavaScriptで生成されるスタイル名はsafelistなどで定義する必要がありそう。
(bootstrap.jsをcontentに含めればよさそうだが試してない)


PurgeCSSを実案件で取り入れるかどうか。

メリット

  • CSSファイルが約1/3に軽量化(サイトパフォーマンスアップ)


デメリット

  • 各プロジェクトでpurgecss.config.jsをメンテナンスする手間
  • PHPで動的に生成したスタイル名とPurgeCSSとの関係性を覚えてないといけない
  • main.cssを監視してビルドする仕組みの追加


サイトパフォーマンスの測定サイトはこちら(lighthouse)

軽量化する前の計測結果:Performanceが80点。
Reduce unused CSSが0.3s。


結論としては実案件でPurgeCSSは使わない。
画像の最適化を行った上でさらにパフォーマンスを発揮したい場合にまた考える。



【関連記事】