var path = require('path'); var through = require('through'); var postcss = require('postcss'); var autoprefixer = require('autoprefixer'); var requireFromString = require('require-from-string'); /** * Stringifies the content * @param {string} content * @returns {string} */ function stringify (content) { return 'module.exports = ' + JSON.stringify(content) + ';\n'; } module.exports = function (file, options) { /** * The function Browserify will use to transform the input. * @param {string} file * @returns {stream} */ function browserifyTransform (file) { var extensions = ['.css', '.sass', '.scss', '.less']; var chunks = []; if (extensions.indexOf(path.extname(file)) === -1) { return through(); } var write = function (buffer) { chunks.push(buffer); }; var end = function () { var contents = requireFromString(Buffer.concat(chunks).toString('utf8')); contents = postcss([autoprefixer(options)]).process(contents).css; this.queue(stringify(contents)); this.queue(null); }; return through(write, end); } if (typeof file !== 'string') { options = file; return browserifyTransform; } else { return browserifyTransform(file); } };