2014-12-04 1 views
0

У меня есть следующая упрощенный глоток задача:Глоток: Проходя в поток в зависимости от содержимого потока

gulp.src(...) 
    .pipe(stuff()) 
    .pipe(moreStuff()) 
    .pipe(imagemin()) 
    .pipe(yetMoreStuff()); 

Я только хочет, чтобы imagemin потока будет вызываться, когда путь к файлу содержит «А», но я хочу, чтобы другие три потока всегда вызывались.

Вызывается gulp.src() в другом месте не подходит - этот пример значительно упрощен, а дублирование всего будет грязным, как ад.

До сих пор я получил это далеко:

var through = require('through2'); 

gulp.src(...) 
    .pipe(stuff()) 
    .pipe(moreStuff()) 
    .pipe(through.obj(function (file, enc, cb) { 
      console.log(file.path.indexOf('hero') !== -1); 

      // file has a pipe method but what do I do?! 
     })) 
    .pipe(yetMoreStuff()); 

ли ничего не делать. Я не знаю, виниловые/потоки достаточно хорошо, чтобы быть в состоянии сделать это сам :(

Как это сделать?

ответ

2

Это звучит как gulp-filter может быть то, что вы ищете.

var Filter = require('gulp-filter'); 
var filter = Filter(['**xyz**']); 

gulp.src(...) 
    .pipe(stuff()) 
    .pipe(moreStuff()) 
    .pipe(filter) 
    .pipe(imagemin()) 
    .pipe(filter.restore()) 
    .pipe(yetMoreStuff()); 
+0

Это именно то, что я хотел! Закончился с помощью [gulp-if] (https://github.com/robrich/gulp-if) вместо этого, потому что я хочу условие else, но я не сказал, что в вопросе :) – callumacrae

Смежные вопросы