cssnano

A modular CSS minifier built on the PostCSS ecosystem, composing dozens of swappable optimization plugins into safe, lite, and advanced presets.

Library
npm
v9.0.3
4,979stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
90/100Excellent
Development Activity100
Maintenance96
Community64
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
89/100Excellent
Architecture85
Code Quality88
Innovation82
Learning Curve100

cssnano is a modular CSS minifier built on top of the PostCSS ecosystem. Rather than a single monolithic compressor, it composes dozens of independent PostCSS plugins — each handling one optimization, from merging duplicate rules to normalizing color and gradient syntax — into configurable presets.

Three built-in presets (default, lite, advanced) trade off safety for aggressiveness, and cssnano can also load a fully custom plugin list or config file, making it equally suited to drop-in build-tool integration and hand-tuned minification pipelines.

What You Get

  • Three ready-made presets — default (safe optimizations), lite (whitespace-focused, minimal risk), and advanced (aggressive transforms like identifier mangling and z-index renumbering) — for different risk tolerances
  • Dozens of independently versioned PostCSS plugins (postcss-merge-rules, postcss-colormin, postcss-convert-values, postcss-svgo, and more) that can be composed individually
  • Config file discovery (cssnano.config.js, .cssnanorc.json) so projects can override preset choice or plugin options without touching build scripts
  • Browserslist-aware transforms that adjust output (autoprefixer handling, vendor-prefix decisions) based on the browsers a project targets
  • A hosted documentation site with an interactive playground for testing optimizations against real CSS

Common Use Cases

  • Minifying production CSS bundles inside webpack/PostCSS/Vite build pipelines via postcss-loader or a postcss.config.js entry
  • Framework integrations that ship cssnano as the default production CSS minifier (Next.js-style and other bundler toolchains)
  • CLI/CI minification steps that pipe a build’s compiled CSS through cssnano before deployment
  • Custom minification pipelines that hand-pick specific optimization plugins instead of a full preset, for teams needing fine control over allowed transforms

Under The Hood

Architecture cssnano’s entry point (packages/cssnano/src/index.js) is a thin PostCSS plugin factory that resolves a “preset” — a string alias, a factory function, an already-invoked { plugins: [] } object, or a config file discovered from .cssnanorc.json/cssnano.config.js — into a flat array of [pluginCreator, options] tuples, then hands them to postcss(). Every actual optimization lives in its own workspace package under packages/; the advanced preset is built by layering extra plugins (postcss-discard-unused, postcss-merge-idents, postcss-zindex, css-declaration-sorter) on top of the default preset rather than duplicating its plugin list. Individual optimization packages, such as postcss-merge-rules, further split their own logic into a src/lib/ directory (compatibility checks, rule rewriting, property-relation tables) so each transform’s edge cases stay isolated and independently testable. Because the entire system funnels through resolvePreset/resolveConfig, that indirection is the one place where a change ripples through every preset and every downstream framework integration.

Tech Stack The project is a pnpm workspace monorepo (pnpm-workspace.yaml with a shared dependency “catalog” for versions like postcss and browserslist) targeting modern Node (^22.22.3 || ^24.15.0 || >=26.0) as native ESM ("type": "module"). Rather than hand-written .ts files, packages are plain JavaScript with JSDoc type annotations checked by tsc -b in emitDeclarationOnly mode across project references for every workspace package, giving full TypeScript strictness without a compile step. Linting and formatting run through oxlint/oxfmt (Rust-based tooling) instead of ESLint/Prettier. Core optimizations build on postcss (peer dependency ^8.5.28), browserslist, autoprefixer, postcss-calc, and postcss-svgo for SVG-in-CSS minification.

Code Quality Tests run on Node’s built-in test runner (node --test) rather than a third-party framework, with per-package test/ directories that include extensive named regression tests for previously reported bugs (issue26.js, issue927.js, issue1594.js) alongside a dedicated config_loading suite that exercises real temp-directory config discovery. A separate mutation-testing harness (util/mutation-testing/) validates that the test suite actually catches injected faults in select optimization plugins. GitHub Actions run test.yml, performance.yml, and publish.yml workflows, coverage is tracked via Codecov, and Dependabot keeps dependencies current — a mature quality bar for a project this size.

API Design The public surface is a single PostCSS plugin: postcss([cssnano]).process(css), with zero required configuration — the default preset applies automatically. Choosing a different risk profile is a one-line change ({ preset: 'lite' } or { preset: 'advanced' }), and teams needing full control can instead pass an explicit plugins array or drop a cssnano.config.js file that the loader discovers on its own. Documentation lives on a dedicated Astro-based site with a live playground rather than being crammed into the README, keeping the package itself lightweight (a single direct dependency: cssnano-preset-default).

Used by 25 apps in this directory

TypeScript
87%
Other

AFFiNE

Productivity · Project Management · Note Taking

72,238

Write, draw, and plan in one infinite canvas — the open-source alternative to Notion and Miro that keeps your data yours.

View details
91
Repo Health
87
Technical
67
Dependency
Built with
TypeScript87%
Updated yesterday
Python
50%
Other

Airbyte

Developer Tools · Data Engineering

21,998

Open-source ELT platform with 600+ connectors for moving data from any source to warehouses, lakes, and AI agents.

View details
95
Repo Health
80
Technical
66
Dependency
Built with
Python50%
Kotlin41%
Updated today
TypeScript
63%
MIT

ALTCHA

Security

2,737

A self-hosted, privacy-first CAPTCHA alternative that uses memory-hard proof-of-work to stop bots without cookies, tracking, or third-party APIs.

View details
72
Repo Health
79
Technical
75
Dependency
Built with
TypeScript63%
Svelte29%
Updated yesterday
TypeScript
96%
Other

Cal.diy

Scheduling

48,218

The 100% MIT-licensed, community-driven scheduling platform — self-host your own booking infrastructure with no enterprise strings attached.

View details
95
Repo Health
86
Technical
65
Dependency
Built with
TypeScript96%
Updated yesterday
JavaScript
90%
Other

CodeSandbox

Code Editors · Developer Tools

13,640

Instantly ready browser-based IDE that runs full npm dependency resolution and transpilation entirely client-side, with no server needed.

View details
69
Repo Health
76
Technical
62
Dependency
Built with
JavaScript90%
Updated 1 weeks ago
JavaScript
47%
MIT

Ghost

CMS · Blogging

55,191

Open source headless Node.js CMS for professional publishing, paid memberships, and newsletters with a fully owned audience.

View details
96
Repo Health
85
Technical
67
Dependency
Built with
JavaScript47%
TypeScript47%
Updated yesterday
Rust
67%
Other

GitButler

Developer Tools · Devops · AI Development

21,624

Git, but better — a modern version control client with stacked branches, parallel workflows, unlimited undo, and first-class support for AI-powered development.

View details
89
Repo Health
84
Technical
67
Dependency
Built with
Rust67%
TypeScript20%
Svelte11%
Updated yesterday
Go
60%
MIT

hoop

Security · Monitoring

807

A wire-protocol gateway that enforces data masking, command blocking, approval workflows, and full session recording for engineers and AI agents accessing production infrastructure.

View details
85
Repo Health
80
Technical
64
Dependency
Built with
Go60%
Clojure19%
JavaScript14%
Updated 3 days ago
TypeScript
98%
Other

Kibana

Analytics · Monitoring

21,284

Your open source window into the Elastic Stack — query, visualize, and act on data stored in Elasticsearch with real-time dashboards, AI-assisted search, and automated alerting.

View details
98
Repo Health
87
Technical
66
Dependency
Built with
TypeScript98%
Updated yesterday

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search