Примените другой плагин gulp в моем собственном плагине gulp, используя through2

#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. Это новый вопрос. Создайте новый пост.