UNPKG

2.01 kBJavaScriptView Raw
1/* jshint node:true */
2
3'use strict';
4
5var prefix = require('autoprefixer');
6var gutil = require('gulp-util');
7var transform = require('stream').Transform;
8var bufferstreams = require('bufferstreams');
9var PLUGIN_NAME = 'gulp-autoprefixer';
10
11function autoprefixerTransform(browsers, options) {
12 // Returns a callback that handles the buffered content
13 return function (err, buffer, callback) {
14 if (err) {
15 callback(gutil.PluginError(PLUGIN_NAME, err));
16 }
17 var prefixed = prefix(browsers, options).process(String(buffer)).css;
18 callback(null, new Buffer(prefixed));
19 };
20}
21
22function gulpautoprefixer() {
23 var stream = new transform({objectMode: true}),
24 browsers,
25 options;
26
27 if (arguments.length) {
28 var args = [].slice.call(arguments, 0);
29
30 if (Array.isArray(args[0])) {
31 browsers = args.shift();
32 }
33
34 var lastArg = args[args.length - 1];
35 if ((typeof lastArg === 'object') && (lastArg !== null)) {
36 options = args.pop();
37 }
38
39 if (!browsers && args.length) {
40 browsers = args;
41 }
42 }
43
44 stream._transform = function (file, unused, done) {
45 // Pass through if null
46 if (file.isNull()) {
47 stream.push(file);
48 done();
49 return;
50 }
51 if (file.isStream()) {
52 try {
53 file.contents = file.contents.pipe(new bufferstreams(autoprefixerTransform(browsers, options)));
54 } catch (err) {
55 err.fileName = file.path;
56 stream.emit('error', new gutil.PluginError('gulp-autoprefixer', err));
57 }
58 stream.push(file);
59 done();
60 } else {
61 try {
62 var prefixed = prefix(browsers, options).process(String(file.contents)).css;
63 file.contents = new Buffer(prefixed);
64 } catch (err) {
65 err.fileName = file.path;
66 stream.emit('error', new gutil.PluginError('gulp-autoprefixer', err));
67 }
68 stream.push(file);
69 done();
70 }
71 };
72 return stream;
73}
74
75gulpautoprefixer.autoprefixerTransform = autoprefixerTransform;
76module.exports = gulpautoprefixer;