motion
Version:
motion - moving development forward
39 lines (33 loc) • 1.01 kB
JavaScript
;
var postcss = require('postcss');
var valueParser = require('postcss-value-parser');
function reduceCalcWhitespaces (node) {
if (node.type === 'space') {
node.value = ' ';
} else if (node.type === 'function') {
node.before = node.after = '';
}
}
function reduceWhitespaces (node) {
if (node.type === 'space') {
node.value = ' ';
} else if (node.type === 'div') {
node.before = node.after = '';
} else if (node.type === 'function') {
node.before = node.after = '';
if (node.value === 'calc') {
valueParser.walk(node.nodes, reduceCalcWhitespaces);
return false;
}
}
}
function transformDecls (decl) {
if (!/filter/.test(decl.prop)) {
decl.value = valueParser(decl.value).walk(reduceWhitespaces).toString();
}
}
module.exports = postcss.plugin('cssnano-function-optimiser', function () {
return function (css) {
css.walkDecls(transformDecls);
};
});