是否必须返回gulp.src()?

jba*_*ndi 4 gulp

我感到困惑gulp.src()

根据这个线程,我认为有必要返回 gulp.src()

gulp项目上的示例始终会返回gulp.src()。即gulp介绍样本

但是,许多插件确实显示不返回的文档gulp.src()。即:无gulpgulp-angular-templatecache

我应该如何确定我的任务是否应该返回gulp.src()?

Ben*_*Ben 5

您应该始终返回,gulp.src以便gulp可以为您正确下沉流。如果流中包含大量文件,则流可能无法完成。另外,您还可以获得其他(次要)好处,例如,跑步者将记录正确的任务完成时间。

通常,我会看到人们称赞为完成报告的任务花费了几秒钟的时间,但是他们所做的只是没有返回流。但是,如果我们返回流,则该任务花费了同样的时间来完成。

不返回流的另一个问题是设置相关任务。如果您希望某个任务在另一个任务之前运行,则需要告诉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);
});
Run Code Online (Sandbox Code Playgroud)

所以...虽然不是强制性的,但这是最佳实践。我建议拉请求那些插件作者的存储库以更新其README文件来表明这一点。