What is csso?
CSSO (CSS Optimizer) is a CSS minifier. It performs three kinds of optimizations: structural optimizations, reducing CSS size by merging blocks with identical properties, removing overridden properties, etc.; cleaning (removing unused @media rules, cutting out the comments, etc.); and compressing (transforming values to shorter forms, merging identical selectors, etc.). It can be used as a command-line tool or as a library.
What are csso's main functionalities?
Minification
Minifies CSS by removing whitespace, comments, and making other optimizations to reduce file size.
const csso = require('csso');
const minifiedCss = csso.minify('.test { color: #ff0000; }').css;
Structural Optimization
Optimizes CSS structure by merging blocks with identical properties and removing overridden properties.
const csso = require('csso');
const optimizedCss = csso.minify('.test { color: red; } .test { font-size: 16px; }', { restructure: true }).css;
Source Map Generation
Generates a source map that can be used to debug the minified CSS by mapping it back to the original sources.
const csso = require('csso');
const result = csso.minify('.test { color: red; }', { sourceMap: true });
const minifiedCss = result.css;
const map = result.map.toString();
Other packages similar to csso
clean-css
clean-css is a fast and efficient CSS optimizer for Node.js and the Web. It provides similar minification capabilities as CSSO but also offers advanced optimizations like restructuring.
uglifycss
uglifycss is a CSS minifier that aims to be fast and simple. It doesn't have as many features as CSSO, focusing mainly on removing whitespace and comments to compress CSS files.
purifycss
purifycss is a tool to remove unused CSS. Unlike CSSO, which focuses on optimizing existing CSS, purifycss analyzes your content and CSS files to remove unused selectors.
1. Introduction
CSSO (CSS Optimizer) is a CSS minimizer unlike others. In addition to usual minification techniques it can perform structural optimization of CSS files, resulting in smaller file size compared to other minifiers.
This document describes installation and usage of CSSO. If you want to learn more about the inner workings of CSSO, please consult the [manual] (https://github.com/css/csso/blob/master/MANUAL.en.md).
Please report issues on [Github] (https://github.com/css/csso/issues).
For feedback, suggestions, etc. write to skryzhanovsky@ya.ru.
2. Installation
2.1. Prerequisites
- for browser use: any OS and a modern web browser
- for command line use: Linux / Mac OS X / any OS with working Node.js
2.2. Install using git
Prerequisites:
To install:
- run
git clone git://github.com/css/csso.git
2.3. Install using npm
Prerequisites:
To install (global):
To update:
To uninstall:
3. Usage
3.1. In the browser
Open web/csso.html
or http://css.github.com/csso/csso.html in your browser.
CSSO is not guaranteed to work in browsers. Preferred way to use this tool is to run it from the command line or via npm modules.
3.2. As an npm module
Sample (test.js
):
var csso = require('csso'),
css = '.test, .test { color: rgb(255, 255, 255) }';
console.log(csso.justDoIt(css));
Output (> node test.js
):
.test{color:#fff}
Use csso.justDoIt(css, true)
to turn structure minimization off.
3.3. From the command line
Run bin/csso
(when installed from git), you will need to have nodejs 0.4.x installed — http://nodejs.org
Run csso
(when installed from npm).
Usage:
csso
shows usage information
csso <filename>
minimizes the CSS in <filename> and outputs the result to stdout
csso <in_filename> <out_filename>
csso -i <in_filename> -o <out_filename>
csso --input <in_filename> --output <out_filename>
minimizes the CSS in <in_filename> and outputs the result to <out_filename>
csso -off
csso --restructure-off
turns structure minimization off
csso -h
csso --help
shows usage information
csso -v
csso --version
shows the version number
Example:
$ echo ".test { color: red; color: green }" > test.css
$ csso test.css
.test{color:green}
4. Minification (in a nutshell)
Safe transformations:
- Removal of whitespace
- Removal of trailing
;
- Removal of comments
- Removal of invalid
@charset
and @import
declarations - Minification of color properties
- Minification of
0
- Minification of multi-line strings
- Minification of the
font-weight
property
Structural optimizations:
- Merging blocks with identical selectors
- Merging blocks with identical properties
- Removal of overridden properties
- Removal of overridden shorthand properties
- Removal of repeating selectors
- Partial merging of blocks
- Partial splitting of blocks
- Removal of empty ruleset and at-rule
- Minification of
margin
and padding
properties
The minification techniques are described in detail in the manual.
5. Authors
6. And finally
- CSSO is licensed under MIT