Clean-css is a node.js library for minifying CSS files. It does the same job as YUI Compressor's CSS minifier, but much faster thanks to many speed optimizations and node.js' V8 engine.
node 0.6.0+ on UN*X (fully tested on OS X 10.6+ and CentOS)
node 0.8.0+ on Windows
npm install clean-css
Clean-css accepts the following command line arguments (please make sure you use <source-file>
as the
very last argument to avoid potential issues):
cleancss [options] <source-file>
-h
,--help
output usage information-v
,--version
output the version number-e
,--remove-empty
Remove empty declarations (e.g.a{}
)-b
,--keep-line-breaks
Keep line breaks--s0
Remove all special comments (i.e./*! special comment */
)--s1
Remove all special comments but the first one-o
,--output [output-file]
Use [output-file] as output instead of stdout
To minify a public.css file into public-min.css do:
cleancss -o public-min.css public.css
To minify the same public.css into the standard output skip the -o
parameter:
cleancss public.css
More likely you would like to concatenate a couple of files. If you are on a Unix-like system:
cat one.css two.css three.css | cleancss -o merged-and-minified.css
On Windows:
type one.css two.css three.css | cleancss -o merged-and-minified.css
Or even gzip the result at once:
cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gz
var cleanCSS = require('clean-css');
var source = "a{font-weight:bold;}";
var minimized = cleanCSS.process(source);
Process method accepts a hash as a second parameter, i.e.,
cleanCSS.process(source, options)
with the following options available:
keepSpecialComments
-*
for keeping all (default),1
for keeping first one,0
for removing allkeepBreaks
- whether to keep line breaks (default is false)removeEmpty
- whether to remove empty elements (default is false)debug
- turns on debug mode measuring time spent on cleaning up (runnpm run bench
to see example)
First clone the source, then run:
npm run bench
for clean-css benchmarks (see test/bench.js for details)npm run check
to check JS sources with JSHintnpm test
for the test suite
Use the /*!
notation instead of the standard one /*
:
/*!
Important comments included in minified output.
*/
- Vincent Voyer (@vvo) for a patch with better empty element regex and for inspiring us to do many performance improvements in 0.4 release.
- Isaac (@facelessuser) for pointing out a flaw in clean-css' stateless mode.
- Jan Michael Alonzo (@jmalonzo) for a patch removing node's old 'sys' package.
- @XhmikosR for suggesting new features (option to remove special comments and strip out URLs quotation) and pointing out numerous improvements (JSHint, media queries).
Clean-css is released under the MIT License.