Opal-Estate-Pro/node_modules/gulp-cssnano/index.js

53 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-09-13 04:44:33 +02:00
'use strict';
var nano = require('cssnano'),
bufferFrom = require('buffer-from'),
assign = require('object-assign'),
PluginError = require('plugin-error'),
Transform = require('stream').Transform,
applySourceMap = require('vinyl-sourcemaps-apply'),
PLUGIN_NAME = 'gulp-cssnano';
module.exports = function (opts) {
opts = opts || {};
var stream = new Transform({objectMode: true});
stream._transform = function (file, encoding, cb) {
if (file.isNull()) {
return cb(null, file);
}
if (file.isStream()) {
var error = 'Streaming not supported';
return cb(new PluginError(PLUGIN_NAME, error));
} else if (file.isBuffer()) {
return nano.process(String(file.contents), assign(opts, {
map: (file.sourceMap) ? {annotation: false} : false,
from: file.relative,
to: file.relative
})).then(function (result) {
if (result.map && file.sourceMap) {
applySourceMap(file, String(result.map));
}
file.contents = bufferFrom(result.css);
this.push(file);
cb();
}.bind(this))
.catch(function (error) {
var errorOptions = {fileName: file.path};
if (error.name === 'CssSyntaxError') {
error = error.message + error.showSourceCode();
errorOptions.showStack = false;
}
// Prevent streams unhandled exception from
// being suppressed by Promise
setImmediate(function () {
cb(new PluginError(PLUGIN_NAME, error));
});
});
}
};
return stream;
};