OSS探訪GitHubでログイン

content fileをscanして実際に参照されるselectorだけを残し、unused CSSを削減する

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
8,050
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/08/20
ページ内ナビ

概要

PurgeCSSはHTML・JavaScript・template等のcontentをscanし、CSS selectorとの対応を調べて未使用ruleを削除するtoolです。CLI、programmatic API、PostCSS・Webpack等のintegrationを提供します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

contentとCSSを照合してunused selectorを除去する

HTML・template・JavaScript等からtokenを抽出し、参照されないCSS selectorをproduction outputから取り除けます。

出典:[1][2]

safelist・custom extractorでdynamic selectorを保護する

静的scanで検出できないclassやframework固有syntaxはsafelistやcustom extractorを使って誤削除を防げます。

出典:[1][3]

CLI・PostCSS・Webpack等の複数integrationを選べる

単体CLIに加え、PostCSS pluginやWebpack pluginなどをbuild pipelineへ組み込めます。

出典:[1]

向いている用途

utility CSSや大きなshared stylesheetから実利用ruleだけをproductionへ残したい場合に向く

templateやcomponentに対してCSS量が大きいprojectで、deploy asset sizeを減らしたい場合に効果を測定しやすいtoolです。

出典:[1]

導入前の確認

dynamic class名はscanで見えない場合がある

JSで組み立てるclass、CMS由来class、runtime state class等はcontentから抽出できず削除対象になる可能性があります。safelistやextractorをtestと合わせて管理してください。

出典:[3]

v8ではPostCSS plugin importがdefault importへ戻り、Node 18 supportは既に終了している

v8.0.0は@fullhuman/postcss-purgecssのimportをdefault importへ戻しました。v7 changelogではNode 18 support削除も明記されています。一方、purgecss v8 package自体にはengines fieldがありません。

出典:[6][5][4]

参考にした公式資料

  1. [1]PurgeCSS v8.0.0 README(2026-10-05)
  2. [2]PurgeCSS v8 CLI guide(2026-10-05)
  3. [3]PurgeCSS v8 safelisting guide(2026-10-05)
  4. [4]PurgeCSS v8.0.0 package metadata(2026-10-05)
  5. [5]PurgeCSS changelog(2026-10-05)
  6. [6]PurgeCSS v8.0.0 release(2026-10-05)
  7. [7]PurgeCSS MIT license(2026-10-05)
編集部からの補足

PurgeCSSはcontent fileからselector候補を抽出して未使用CSSを削除するため、runtimeで動的生成するclass名はscanだけでは検出できない場合があります。dynamic classはsafelistやcustom extractorで保護する設計が重要です。

3ステップで試す

  1. 1

    PurgeCSS 8.0.0を一時projectへ導入する

    stable releaseを固定し、content scanとunused selector除去をisolated projectで確認します。

    demo=$(mktemp -d "${TMPDIR:-/tmp}/purgecss.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact --save-dev purgecss@8.0.0
  2. 2

    使用中・未使用selectorを含むHTML/CSSを作る

    HTMLから参照される.usedと参照されない.unusedを用意し、scan結果を確認できる入力にします。

    printf "%s\n" '<div class="used">Hello</div>' > index.html && printf "%s\n" '.used { color: green; }' '.unused { color: red; }' > styles.css
  3. 3

    CLIでunused selectorを除去する

    PurgeCSSがcontentをscanし、使用中selectorを残したまま未使用selectorを削除することを確認します。

    mkdir build && npx purgecss --css styles.css --content index.html --output build && grep -q ".used" build/styles.css && ! grep -q ".unused" build/styles.css
公式READMEで確認

成長

成長の推移 · 直近30日

8,050 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • css
  • optimization-tools
  • postcss
  • postcss-plugin
  • purgecss
  • rollup-plugin
  • webpack-plugin
Stars
8,050
Forks
244
Watchers
55
Open Issues
68
所有者種別
Organization
主要言語
TypeScript
ライセンス
MIT
リポジトリ最終更新
2026/08/20

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?