2014-12-09 4 views
3

я следующий глоток задача:Объединить два gulpif в один

gulp.task('app-scripts', function() { 
    return getEnvScriptsStream() 
     .pipe(gulpif(stgOrProd(), uglify())) 
     .pipe(gulpif(stgOrProd(), concat('embed'))) 
     .pipe(gulp.dest(paths.js)) 
     .pipe(connect.reload()); 
}); 

Как я могу объединить два gulpif() в один?

ответ

0

Я думаю глотком плагины объектные потоки, так что вы могли бы уйти с

gulp.task('app-scripts', function() { 
    return getEnvScriptsStream() 
     .pipe(gulpif(stgOrProd(), uglify().pipe(concat('embed')))) 
     .pipe(gulp.dest(paths.js)) 
     .pipe(connect.reload()); 
}); 
+0

Я не могу найти никакой документации по этому поводу. Я тестировал его и, похоже, работал, но не все время. Есть идеи? – Naor

+0

Что вы имеете в виду иногда? Какие-либо конкретные ошибки? Если вы хотите лучше понять концепцию [как работает gulp] (https://medium.com/@contrahacks/gulp-3828e8126466), я рекомендую [справочник по потоку] (https://github.com/substack/stream-handbook) узнать о потоках. Плагины Gulp - это потоки объектов, объекты которых называются виниловыми объектами, которые в основном представляют собой абстракцию файла. Наиболее распространенным примером этого является то, что реализует модуль винил-fs. – spelufo

+0

concat использует сквозной модуль и убирает сквозной 2. Это может [вызвать некоторые проблемы] (http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html) – spelufo

2

Рекомендуемый способ сделать это с lazypipe согласно gulp-if documentation itself:

Lazypipe создает функция, которая инициализирует цепочку трубопроводов при использовании. Это позволяет создать цепочку событий внутри условия gulp-if.

Для рассматриваемого примера:

gulp.task('app-scripts', function() { 
    return getEnvScriptsStream() 
    .pipe(gulpif(stgOrProd(), lazypipe().pipe(uglify).pipe(concat, 'embed')())) 
    .pipe(gulp.dest(paths.js)) 
    .pipe(connect.reload()); 
}); 
Смежные вопросы