2015-01-05 3 views
4

Я смущен примерно gulp.src().Обязательно ли возвращать gulp.src()?

Согласно this thread Я бы предположил, что необходимо returngulp.src().

Примеры на проекте gulp всегда возвращают gulp.src(). то есть gulp intro sample.

Однако многие плагины показывают документацию, которая не возвращает gulp.src(). то есть: gulp-less или gulp-angular-templatecache

Как мне решить, должна ли моя задача возвращать gulp.src()?

ответ

4

Вы должны всегда возвращать gulp.src, чтобы глоток мог правильно потопить поток для вас. Поток может не завершиться иначе, если в нем имеется большое количество файлов. Кроме того, вы получаете некоторые другие (незначительные) преимущества, такие как то, что правильное время выполнения задачи будет регистрироваться бегуном.

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

Другая проблема с возвратом потока - это настройка зависимых задач. Если вы хотите, чтобы какая-то задача выполнялась перед другой задачей, вам нужно сказать gulp, что вы закончили обработку. Вы либо выполняете это с помощью функции обратного вызова для задачи, либо возвращаете поток.

Единственный случай, когда я не возвращал бы поток, если у меня есть несколько потоков в одной задаче; для этого вы можете использовать merge-stream:

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

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

    return merge(someOperation, someOtherOperation); 
}); 

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

+0

Спасибо за ваши объяснения! Однако у меня есть настройка Gulp, которая не работает при возврате 'gulp.src()' ... и я не понимаю, почему? Я был бы очень благодарен, если бы вы могли посмотреть: http://stackoverflow.com/questions/27789367/gulp-does-not-work-when-returning-stream – jbandi

1

Если вы не вернете поток, gulp сообщит время, необходимое для сборки трубы. Если вы вернете поток, он будет правильно сообщать время, необходимое для выполнения задач.

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