precss
Version:
Use Sass-like markup and staged CSS features in CSS
29 lines (20 loc) • 1.25 kB
JavaScript
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var postcss = _interopDefault(require('postcss'));
var postcssAdvancedVariables = _interopDefault(require('postcss-advanced-variables'));
var postcssAtroot = _interopDefault(require('postcss-atroot'));
var postcssExtendRule = _interopDefault(require('postcss-extend-rule'));
var postcssNested = _interopDefault(require('postcss-nested'));
var postcssPresetEnv = _interopDefault(require('postcss-preset-env'));
var postcssPropertyLookup = _interopDefault(require('postcss-property-lookup'));
// tooling
const plugins = [postcssExtendRule, postcssAdvancedVariables, postcssPresetEnv, postcssAtroot, postcssPropertyLookup, postcssNested]; // plugin
var index = postcss.plugin('precss', rawopts => {
// initialize options, defaulting preset-env to stage 0 features
const opts = Object.assign({
stage: 0
}, rawopts); // initialize all plugins
const initializedPlugins = plugins.map(plugin => plugin(opts)); // process css with all plugins
return (root, result) => initializedPlugins.reduce((promise, plugin) => promise.then(() => plugin(result.root, result)), Promise.resolve());
});
module.exports = index;
;