【Tailwind CSS】purgeしてtailwind.cssを圧縮しよう

html/css
この記事は約8分で読めます。
スポンサーリンク

はじめに

前回はtailwind.cssをビルドして生成する方法について説明しました。

まだの方はこちらを参考にしてください。

この記事ではtailwind.css を作成できている前提で進めます。

Tailwind CSSをnpmでインストールして使う方法について紹介していきます。

今回はtailwind.css をpurge(パージ)する方法について説明します。

対象者
  • Tailwind CSSが使い慣れてきた方
  • tailwind.cssを作成できている方

まとめはこちらを参照してください。

それではtailwind.css をpurgeする方法に移ります。

スポンサーリンク

purge(パージ)とは

前回作成したtailwind.css のサイズを改めて見てみましょう。

tailwindcss 2.1.2

🚀 Building: src/vendor/tailwind/import.css

✅ Finished in 4.4 s
📦 Size: 3.81MB
💾 Saved to src/vendor/tailwind/tailwind.css

サイズが3.81MBと超巨大ファイルになっていますね。

これではcssの読み込み時に膨大な時間が掛かってしまうなどの弊害があります。

実際必要なcssといえばhtmlやJavaScriptで使用しているcssのみでいいはずです。

ここでpurgeの出番となるわけですね。

purgeとはhtmlやJavaScriptで使っているcssを抽出し、必要のないcssを削除することを言います。

purgeという意味は日本語で「一掃する」という意味です。

スポンサーリンク

purgeしてみよう

purgeを実行すると数MBあったファイルが数KBにまで削減することができます。

やり方はいくつかありますので代表的なやり方を3つ紹介します。

  • tailwind.config.js のpurgeオプションを指定してpurgeする
  • 環境変数を切り替えてpurgeする
  • gulpやwebpackなどを使ってpurgeする

それぞれのやり方を説明していきます。

tailwind.config.jsのpurgeオプションを指定してpurgeする

tailwind.config.js のpurgeオプション を指定する場合のメリットデメリットは以下です。

  • purgeオプションを指定するだけなので簡単
  • purgeするしないを何度も切り替えてビルドする場合は面倒

それでは説明していきます。

以下のtailwind.config.js のpurgeオプション を編集していきます。

tailwind.config.js変更前

以下のように修正しましょう。

purge: {
  enabled:true,   //  purgeするかどうか
  content:['./src/*.html','./src/js/**/*.js']  // purge対象のファイル
},
tailwind.config.js変更後

それではnpmのコマンドでビルドを実行してみましょう。

npm run build

以下のようにファイルサイズが削減されていれば正しく動作しています。

tailwindcss 2.1.2

🚀 Building: src/vendor/tailwind/import.css

✅ Finished in 3.62 s
📦 Size: 11.39KB
💾 Saved to src/vendor/tailwind/tailwind.css

環境変数を切り替えてpurgeする

環境変数を切り替えてpurgeする場合のメリットデメリットは以下です。

  • 環境変数を切り替えてビルドするだけなので簡単
  • ビルド用のコマンドが増える

それでは説明していきます。

npmでインストールしたcross-envで環境変数の設定をしてビルドを行います。

cross-envをインストールしていない方はこちら参照。

cross-envを使うと開発環境用(development)、本番環境用(production)の切り替えを行うことができます。

package.json のnpmコマンドにcross-envを反映させていきます。

npmコマンドを以下のように追加・削除を行ってください。

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  // 以下削除
  // "build":"npx tailwindcss-cli@latest build ./src/vendor/tailwind/import.css -o ./src/vendor/tailwind/tailwind.css",

  // 以下追加
  "dev":"cross-env NODE_ENV=development npx tailwindcss-cli@latest build ./src/vendor/tailwind/import.css -o ./src/vendor/tailwind/tailwind.css",
  "pro":"cross-env NODE_ENV=production npx tailwindcss-cli@latest build ./src/vendor/tailwind/import.css -o ./src/vendor/tailwind/tailwind.css"
},

開発環境用(development)で実行すると通常のビルド、本番環境用(production)で実行するとpurgeが有効のビルド結果が出力されます。

コマンド名は何でもOK

最後にtailwind.config.js のpurgeオプション を以下のように修正します。

purge: {
  // enabled:true,   コメントアウト
  content:['./src/*.html','./src/js/**/*.js']  // 必要
},

purgeオプション にはpurge対象を指定するだけです。

enabled:trueの状態のままだと常にpurgeされてしまうのでコメントアウトしておきます。

それではターミナルから以下コマンドを実行しましょう。

npm run pro

以下のようにファイルサイズが削減されていれば正しく動作しています。

tailwindcss 2.1.2

🚀 Building: src/vendor/tailwind/import.css

✅ Finished in 3.9 s
📦 Size: 11.39KB
💾 Saved to src/vendor/tailwind/tailwind.css

gulpやwebpackなどを使ってpurgeする

gulpやwebpackなどを使ってpurgeする場合のメリットデメリットは以下です。

  • 高速でpurgeをすることができる
  • 環境構築が大変

ここではgulpを使ったpurgeのやり方で説明していきます。

詳細については別途こちらを参照してください。

それではgulpfile.jstailwind.css をpurgeするためのプログラムを記述しましょう。

"use strict";

const gulp = require("gulp");
const purgeCss = require("gulp-purgecss");

//  purge
function purge(done) {
  gulp.src("./src/vendor/tailwind/tailwind.css")
      .pipe(purgeCss({
        content: ["./src/*.html", "./src/js/**/*.js"],
        defaultExtractor: (content) => content.match(/[^<>"'`\s]*[^<>"'`\s:]/g),
      }))
      .pipe(gulp.dest("./dist/vendor/tailwind/"));
  done();
};

exports.purge = purge;

/************************************************************************/
/*  END OF FILE                                                         */
/************************************************************************/

以下コマンドを実行して正しくpurgeできているかどうか確認してください。

npx gulp purge

purgeするファイルとpurge後の出力ファイルはご自身のディレクトリ構成に合わせて変更してください。

スポンサーリンク

おわりに

以上tailwind.css をpurgeするやり方について説明しました。

いかがだったでしょうか。

容量が大きいまま使用するのは実務を行う場合には向いていません。

最小限のサイズとなるようにpurgeを忘れないようにしましょう。

コメント

タイトルとURLをコピーしました