#gulp #through2
#глоток #through2
Вопрос:
Я пишу свой собственный плагин gulp, который выглядит следующим образом…
var through2 = require('through2');
var order = require('gulp-order');
module.exports = function() {
return through2.obj(function(file, encoding, callback) {
callback(null, transform(file));
});
};
function transform(file) {
// I will modify file.contents here - its ok
return file;
}
и я хотел бы применить какой-нибудь другой плагин gulp к моему буферу, который пришел из gulp.src. Возможно ли это с помощью through2? Например, перед вызовом through2.obj() я хотел бы применить плагин gulp-order — как я могу это сделать?
Ответ №1:
Если вы хотите объединить разные плагины gulp lazypipe
, это, как правило, хороший вариант:
var through2 = require('through2');
var order = require('gulp-order');
function yourPlugin()
return through2.obj(function(file, encoding, callback) {
callback(null, transform(file));
});
}
function transform(file) {
// I will modify file.contents here - its ok
return file;
}
function orderPlugin()
return order(['someFolder/*.js', 'someOtherFolder/*.js']);
}
module.exports = function() {
return lazypipe().pipe(orderPlugin).pipe(yourPlugin)();
};
Комментарии:
1. Спасибо! Это работает как шарм! Есть ли какое-нибудь решение для обработки буфера два раза. Например. У меня есть 3 файла в буфере (из gulp.src) A, B и C, и у меня есть 2 плагина, выполняющие функции yourPlugin1 и yourPlugin2. При использовании ленивого канала файлы будут обрабатываться в следующем порядке yourPlugin1:A, yourPlugin2:A, yourPlugin1: B, yourPlugin2: B, yourPlugin1: C, yourPlugin2: C. Я хотел бы получить yourPlugin1:A, yourPlugin1:B, yourPlugin1: C, а затем yourPlugin2: A, yourPlugin2:B, yourPlugin2: C.
2. Это новый вопрос. Создайте новый пост.