2014-12-30 2 views
0

Как запустить несколько действий в одной задаче gulp? Следующее не работает, так как кажется, что вышло из строя и вызвало всевозможные странные ошибки. Я пробовал event-streammerge, как в How to perform multiple gulp commands in one task, но это не похоже на работу с del.Как запустить несколько действий в одной задаче с глотком?

Я знаю, что могу разделить его на несколько задач и использовать плагин run-sequence, но, как и в связанном вопросе, я не хочу раздувать мой Gulpfile задачами, которые никогда не будут выполняться индивидуально и не имеют смысла за пределами данный контекст.

gulp.task('task', function() { 

    del('....'); 

    gulp.src('....') 
     .pipe(gulp.dest('....')); 

    gulp.src('....') 
     .pipe(gulp.dest('....')); 

}); 
+0

Но почему бы не «запустить последовательность»? Если вы заботитесь о «вздутии Gulpfile», вы можете создавать дополнительные файлы и «требовать» их. – Ginden

ответ

3

Вы должны назначить потоки в переменные, а затем запустить их вместе с es.merge (или вы можете использовать merge-stream, если вам не нужен весь поток событий). Что касается работы с del, посмотрите на настройки зависимого задания для выполнения вашей чистой операции:

https://github.com/gulpjs/gulp/blob/master/docs/recipes/delete-files-folder.md

gulp.task('clean', function (cb) { 
    del([ 
    'dist/report.csv', 
    // here we use a globbing pattern to match everything inside the `mobile` folder 
    'dist/mobile/**', 
    // we don't want to clean this file though so we negate the pattern 
    '!dist/mobile/deploy.json' 
    ], cb); 
}); 

Вы можете определить свою другую задачу так:

var merge = require('merge-stream'); 

gulp.task('task', ['clean'], function() { 
    var someOperation = gulp.src('./').pipe(gulp.dest('out')); 
    var someOtherOperation = gulp.src('./assets').pipe(gulp.dest('out/assets')); 

    return merge(someOperation, someOtherOperation); 
}); 

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

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