OSS探訪GitHubでログイン

PostCSS pluginをpresetとして組み合わせ、production CSSをmodularに圧縮する

スコアの見方

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

Stars
4,978
主要言語
CSS
ライセンス
MIT
リポジトリ最終更新
2026/10/05
ページ内ナビ

概要

cssnanoはPostCSS ecosystem上のmodular CSS minifierです。color圧縮、comment除去、rule整理、descriptor正規化等の最適化をpresetとしてまとめ、build時にCSS outputを縮小します。

特徴と向いている用途

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

主な特徴

default presetで安全性を重視したCSS最適化をまとめて適用する

default presetは一般的なCSSで安全に適用しやすいtransformをまとめ、複数pluginを一つずつ設定せずにminify pipelineを構成できます。

出典:[1][2]

color・comment・at-rule・unicode-range等を複数段階で圧縮する

単なるwhitespace除去だけでなく、color短縮、comment除去、overridden at-rule削除、descriptor normalization等を組み合わせます。

出典:[1]

presetを切り替えて最適化のaggressivenessを選べる

defaultに加えてadvanced等のpresetがあり、project条件に応じてより積極的なtransformを選べます。

出典:[1]

向いている用途

production buildでCSS sizeを削減し、既存PostCSS pipelineへminifyを追加したい場合に向く

Autoprefixer等と同じPostCSS chainへ組み込み、deploy assetのCSSを最終段で圧縮したいfrontend projectに適します。

出典:[1][2]

導入前の確認

9.3.1は新しいNode runtimeを要求する

package metadataはNode ^22.22.3 || ^24.15.0 || >=26.0を要求します。Node 20や古いNode 22ではinstall/runtime条件を満たしません。

出典:[2]

advanced presetはproject条件を確認して使う

READMEはadvanced presetを、siteが必要条件を満たす場合に安全なよりaggressiveなtransformとして区別しています。defaultから切り替える際はvisual regressionを確認してください。

出典:[1]

参考にした公式資料

  1. [1]cssnano 9.3.1 README(2026-10-05)
  2. [2]cssnano 9.3.1 package metadata(2026-10-05)
  3. [3]cssnano 9.3.1 release(2026-10-05)
  4. [4]cssnano MIT license(2026-10-05)
編集部からの補足

cssnano 9.3.1はPostCSS ^8.5.28に加え、Node ^22.22.3 || ^24.15.0 || >=26.0を要求します。既存CIがNode 20や古い22系なら、導入前にruntime upgradeが必要です。

3ステップで試す

  1. 1

    cssnano 9.3.1とPostCSSを導入する

    Node.js ^22.22.3 || ^24.15.0 || >=26.0 の対応環境でstable releaseを固定します。

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

    圧縮対象CSSとdefault preset実行scriptを作る

    default presetを使い、color・zero・whitespace等を圧縮できる小さな入力を用意します。

    printf "%s\n" '.card { color: #ff0000; margin: 0px 0px 0px 0px; }' > input.css && printf "%s\n" "import fs from 'node:fs';" "import postcss from 'postcss';" "import cssnano from 'cssnano';" "const css = fs.readFileSync('input.css', 'utf8');" "const result = await postcss([cssnano({ preset: 'default' })]).process(css, { from: 'input.css', to: 'output.css' });" "fs.writeFileSync('output.css', result.css);" > demo.mjs
  3. 3

    minifyして出力を確認する

    color短縮などが適用され、output CSSがinputより小さくなったことを確認します。

    node demo.mjs && grep -Eq '(red|#f00)' output.css && test "$(wc -c < output.css)" -lt "$(wc -c < input.css)"
公式READMEで確認

成長

成長の推移 · 直近30日

4,978 Stars

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

開発アクティビティ

直近90日・週次

Commit(直近30日)
181
Open PR
1

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

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

GitHub Topics

  • postcss
  • cssnano
  • optimisation
  • css
  • minification
Stars
4,978
Forks
331
Watchers
49
Open Issues
27
Contributors
117
所有者種別
Organization
主要言語
CSS
ライセンス
MIT
リポジトリ最終更新
2026/10/05

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

情報の誤りを報告

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

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