Package Exports
- clean-css-pre-2.1.0
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (clean-css-pre-2.1.0) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
What is clean-css?
Clean-css is a fast and efficient Node.js library for minifying CSS files.
According to tests it is one of the best available.
Usage
What are the requirements?
Node.js 0.8.0+ (tested on CentOS, Ubuntu, OS X 10.6+, and Windows 7+)How to install clean-css?
npm install clean-cssHow to upgrade clean-css from 1.x to 2.x?
Command-line interface (CLI)
npm update clean-cssor point package.json to version 2.x. That's it!
Node.js module
Update clean-css as for CLI above.
Then change your JavaScript code from:
var minimized = CleanCSS.process(source, options);into
var minimized = new CleanCSS(options).minify(source);And you are done.
How to use clean-css CLI?
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
-b, --keep-line-breaks Keep line breaks
--s0 Remove all special comments, i.e. /*! comment */
--s1 Remove all special comments but the first one
-r, --root [root-path] A root path to which resolve absolute @import rules
and rebase relative URLs
-o, --output [output-file] Use [output-file] as output instead of STDOUT
-s, --skip-import Disable @import processing
--skip-rebase Disable URLs rebasing
--skip-advanced Disable advanced optimizations - selector & property merging,
reduction, etc.
--selectors-merge-mode [ie8|*] DEPRECATED: Use --compatibility switch
-c, --compatibility [ie7|ie8] Force compatibility mode
-d, --debug Shows debug information (minification time & compression efficiency)Examples:
To minify a public.css file into public-min.css do:
cleancss -o public-min.css public.cssTo minify the same public.css into the standard output skip the -o parameter:
cleancss public.cssMore 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.cssOn Windows:
type one.css two.css three.css | cleancss -o merged-and-minified.cssOr even gzip the result at once:
cat one.css two.css three.css | cleancss | gzip -9 -c > merged-minified-and-gzipped.css.gzHow to use clean-css programmatically?
var CleanCSS = require('clean-css');
var source = 'a{font-weight:bold;}';
var minimized = new CleanCSS().minify(source);CleanCSS constructor accepts a hash as a parameter, i.e.,
new CleanCSS(options).minify(source) with the following options available:
keepSpecialComments-*for keeping all (default),1for keeping first one only,0for removing allkeepBreaks- whether to keep line breaks (default is false)benchmark- turns on benchmarking mode measuring time spent on cleaning up (runnpm run benchto see example)root- path to resolve absolute@importrules and rebase relative URLsrelativeTo- path with which to resolve relative@importrules and URLsprocessImport- whether to process@importrulesnoRebase- whether to skip URLs rebasingnoAdvanced- set to true to disable advanced optimizations - selector & property merging, reduction, etc.selectorsMergeMode-ie8for IE8 compatibility mode,*for merging all (default)debug- set to true to get minification statistics understatsproperty (seetest/custom-test.jsfor examples)
How to use clean-css with Grunt?
See grunt-contrib-cssmin plugin.
What are the clean-css' dev commands?
First clone the source, then run:
npm run benchfor clean-css benchmarks (see test/bench.js for details)npm run checkto check JS sources with JSHintnpm testfor the test suite
How to contribute to clean-css?
- Fork it.
- Add test(s) veryfying the problem.
- Fix the problem.
- Make sure all tests still pass (
npm test). - Make sure your code doesn't break style rules (
npm run check). - Send a PR.
If you wonder where to add tests, go for:
test/unit-test.jsif it's a simple scenariotest/data/...if it's a complex scenario (just add two files, input and expected output)test/binary-test.jsif it's related tobin/cleancssbinarytest/module-test.jsif it's related to importingclean-cssas a moduletest/protocol-imports-test.jsif it fixes anything related to protocol@imports
Tips & Tricks
How to preserve a comment block?
Use the /*! notation instead of the standard one /*:
/*!
Important comments included in minified output.
*/How to rebase relative image URLs
Clean-css will handle it automatically for you (since version 1.1) in the following cases:
- When using the CLI:
- Use an output path via
-o/--outputto rebase URLs as relative to the output file. - Use a root path via
-r/--rootto rebase URLs as absolute from the given root path. - If you specify both then
-r/--roottakes precendence.
- Use an output path via
- When using clean-css as a library:
- Use a combination of
relativeToandtargetoptions for relative rebase (same as 1 in CLI). - Use a combination of
relativeToandrootoptions for absolute rebase (same as 2 in CLI). roottakes precendence overtargetas in CLI.
- Use a combination of
Acknowledgments
- 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.js' old
syspackage. - @XhmikosR for suggesting new features (option to remove special comments and strip out URLs quotation) and pointing out numerous improvements (JSHint, media queries).
- Anthony Barre (@abarre) for improvements to
@importprocessing, namely introducing the--skip-import/processImportoptions. - Simon Altschuler (@altschuler) for fixing
@importprocessing inside comments.
License
Clean-css is released under the MIT License.



