59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
/* jshint node:true */
|
|
|
|
'use strict';
|
|
|
|
var prefix = require('autoprefixer'),
|
|
gutil = require('gulp-util'),
|
|
transform = require('stream').Transform,
|
|
bufferstreams = require('bufferstreams'),
|
|
|
|
PLUGIN_NAME = 'gulp-autoprefixer';
|
|
|
|
function autoprefixerTransform(opts) {
|
|
// Returns a callback that handles the buffered content
|
|
return function(err, buffer, callback) {
|
|
if (err) {
|
|
callback(gutil.PluginError(PLUGIN_NAME, err));
|
|
}
|
|
var prefixed = prefix(opts).process(String(buffer)).css;
|
|
callback(null, new Buffer(prefixed));
|
|
};
|
|
}
|
|
|
|
function gulpautoprefixer() {
|
|
var stream = new transform({ objectMode: true }),
|
|
opts = arguments.length > 0 ? [].slice.call(arguments, 0) : ['> 1%','last 2 versions','ff 17','opera 12.1'];
|
|
stream._transform = function(file, unused, done) {
|
|
// Pass through if null
|
|
if (file.isNull()) {
|
|
stream.push(file);
|
|
done();
|
|
return;
|
|
}
|
|
if (file.isStream()) {
|
|
try {
|
|
file.contents = file.contents.pipe(new bufferstreams(autoprefixerTransform(opts)));
|
|
} catch (err) {
|
|
err.fileName = file.path;
|
|
stream.emit('error', new gutil.PluginError('gulp-autoprefixer', err));
|
|
}
|
|
stream.push(file);
|
|
done();
|
|
} else {
|
|
try {
|
|
var prefixed = prefix(opts).process(String(file.contents)).css;
|
|
file.contents = new Buffer(prefixed);
|
|
} catch (err) {
|
|
err.fileName = file.path;
|
|
stream.emit('error', new gutil.PluginError('gulp-autoprefixer', err));
|
|
}
|
|
stream.push(file);
|
|
done();
|
|
}
|
|
};
|
|
return stream;
|
|
}
|
|
|
|
gulpautoprefixer.autoprefixerTransform = autoprefixerTransform;
|
|
module.exports = gulpautoprefixer;
|