Grunt

インストール

npm install grunt-purgecss --save-dev

プラグインがインストールされたら、次の JavaScript コードを Gruntfile に記述して有効にできます。

grunt.loadNpmTasks('grunt-purgecss');

"purgecss" タスク

概要

プロジェクトの Gruntfile で、grunt.initConfig() に渡されるデータオブジェクトに purgecss という名前のセクションを追加します。

grunt.initConfig({
    // Configuration to be run (and then tested).
    purgecss: {
      my_target: {
        options: {
          content: ['./src/**/*.html']
        },
        files: {
          'dist/app.css': ['src/css/app.css']
        }
      }
    }
  });

オプション

purgecss のすべてのオプションは、プラグインで使用できます。以下に主なオプションを示します。完全なリストについては、Purgecss ドキュメントサイト新しいウィンドウで開くを参照してください。

options.content

型: string | Object

Purgecss で分析するコンテンツを、ファイル名またはグロブの配列で指定できます。ファイルは HTML、Pug、Blade などを使用できます。

options.extractors

型: Array<Object>

Purgecss はニーズに合わせて調整できます。未使用の CSS が多数削除されていないことに気付いた場合は、カスタムエクストラクターを使用することをお勧めします。エクストラクターの詳細については、こちら新しいウィンドウで開くを参照してください。

options.safelist

最終的な CSS に残しておくことが安全なセレクターを指定できます。これは、safelist オプションを使用して実現できます。

このオプションには2つの形式があります。

safelist: ['random', 'yep', 'button', /^nav-/]

この形式では、safelist は文字列または正規表現を受け入れることができる配列です。

複合形式は次のとおりです。

safelist: {
    standard: ['random', 'yep', 'button', /^nav-/],
    deep: [],
    greedy: [],
    keyframes: [],
    variables: []
}

options.keyframes

型: boolean デフォルト値: false

animate.css などの CSS アニメーションライブラリを使用している場合は、keyframes オプションを true に設定することで、未使用のキーフレームを削除できます。

options.fontFace

型: boolean デフォルト値: false

CSS に未使用の @font-face ルールがある場合は、fontFace オプションを true に設定することで削除できます。

以下の例では、利用可能なすべての主要オプションを使用しています。

grunt.initConfig({
    // Configuration to be run (and then tested).
    purgecss: {
      my_target: {
        options: {
          content: ['./src/**/*.html', `src/**/*.js`, 'src/**/*.blade', 'src/**/*.vue'],
          extractors: {
            extractor: class {
                static extract(content) {
                    content.match(/a-Z/) || []
                }
            },
            extension: ['html', 'blade']
          },
          safelist: ['random', 'yep', 'button', /red$/],
          keyframes: true,
          fontFace: true
        },
        files: {
          'dist/app.css': ['src/css/app.css']
        }
      }
    }
  });