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