24 lines
680 B
JavaScript
24 lines
680 B
JavaScript
'use strict';
|
|
|
|
var match = require('gulp-match');
|
|
var ternaryStream = require('ternary-stream');
|
|
var through2 = require('through2');
|
|
|
|
module.exports = function (condition, trueChild, falseChild, minimatchOptions) {
|
|
if (!trueChild) {
|
|
throw new Error('gulp-if: child action is required');
|
|
}
|
|
|
|
if (typeof condition === 'boolean') {
|
|
// no need to evaluate the condition for each file
|
|
// other benefit is it never loads the other stream
|
|
return condition ? trueChild : (falseChild || through2.obj());
|
|
}
|
|
|
|
function classifier (file) {
|
|
return !!match(file, condition, minimatchOptions);
|
|
}
|
|
|
|
return ternaryStream(classifier, trueChild, falseChild);
|
|
};
|