Opal-Estate-Pro/node_modules/gulp-cssnano/index.js
2019-09-13 11:27:52 +07:00

53 lines
1.8 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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;
};