2014-09-07 6 views
13

Мне сложно понять, как обрабатывать несколько источников глотков в одной задаче. В задаче, как это:Как выполнить несколько команд gulp в одной задаче

gulp.task('task1', function (cb) { 
    gulp.src('src/js/**/*').pipe(gulp.dest('dist')); 
    gulp.src('src/css/**/*').pipe(gulp.dest('dist')); 
    ... 
}); 

Я хотел бы, чтобы обработать все различные исходные файлы, а затем отметить задание завершенным, поэтому другие задачи могут зависеть на его завершения.

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

ответ

28

Вы можете передать массив globs в gulp.src, если вы делаете то же самое со всеми файлами. Например,

gulp.task('task1', function() { 
    return gulp.src(['src/js/**/*', 'src/css/**/*']).pipe(gulp.dest('dist')); 
}); 

Обязательно верните поток, чтобы оркестр знал, когда эта задача будет завершена.

Если вы делаете разные вещи для разных наборов файлов, вы можете объединить потоки, как это в одной задаче:

var es = require('event-stream'); 
gulp.task('fancy-task', function() { 
    return es.merge(
     gulp.src('*.js').pipe(some-js-plugin()), 
     gulp.src('*.css').pipe(some-style-plugin)) 
     .pipe(gulp.dest('dist')); 
}); 
+3

Sure: слияние потоков. Я должен был подумать. – doberkofler

+1

Что делать, если вам нужны разные адресатов для разных наборов файлов? –

+0

Кажется, вы можете просто поместить 'gulp.dest' в каждый поток, слияние будет работать так, как ожидалось. –

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