2014-09-07 6 views
13

Trudno mi zrozumieć, jak przetwarzać wiele źródeł łyka w jednym zadaniu. W zadaniu jak ten:Jak wykonać wiele poleceń gulp w jednym zadaniu

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

chciałbym przetworzyć wszystkie inne pliki źródłowe, a następnie oznaczyć zadanie jako zakończone, więc inne zadania mogą zależeć na jego zakończeniu.

Jestem świadomy możliwości korzystania z indywidualnych zadań dla każdego źródła, ale to sprawiłoby, że wszystko byłoby bardziej skomplikowane i nadymałoby orkiestratora ogromną liczbą zadań, które w rzeczywistości nie są potrzebne indywidualnie.

Odpowiedz

28

Możesz przekazać tablicę globów do gulp.src, jeśli robisz to samo dla wszystkich plików. Na przykład:

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

Pamiętaj, aby zwrócić strumień, aby orkiestrator wiedział, kiedy to zadanie zostało zakończone.

Jeśli robisz różne rzeczy dla różnych zestawów plików, można łączyć strumienie tak w jednym zadaniu:

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: łączące strumienie. Powinienem się domyślić. – doberkofler

+1

Co zrobić, jeśli chcesz mieć różne miejsca docelowe dla różnych zestawów plików? –

+0

Wygląda na to, że możesz po prostu wstawić 'gulp.dest' w każdym strumieniu, którego scalenie będzie działać zgodnie z oczekiwaniami. –