UNPKG

cssnano

Version:

A modular minifier, built on top of the PostCSS ecosystem.

48 lines (43 loc) 1.04 kB
'use strict'; var postcss = require('postcss'); var list = postcss.list; var cssList = require('css-list'); var balancedMatch = require('balanced-match'); var functions = [ 'calc', 'cubic-bezier', 'gradient', 'rect', 'rotate3d', 'scale', 'scale3d', 'transform3d', 'translate3d', 'url', 'var' ]; function optimise (decl) { decl.value = cssList.map(decl.value, function (value, type) { if (type !== 'func') { return value; } var match = balancedMatch('(', ')', value); if (!~functions.indexOf(match.pre)) { return value; } return [ match.pre, '(', list.comma(match.body).map(function (value) { return list.space(value).join(' '); }).join(), ')', match.post ].join(''); }); } module.exports = postcss.plugin('cssnano-function-optimiser', function () { return function (css) { css.walkDecls(optimise); }; });