return gulp.src() 是强制性的吗?

is it mandatory to return gulp.src()?

我对 gulp.src() 感到困惑。

根据 this thread 我认为有必要 return gulp.src().

gulp 项目中的示例总是 return gulp.src()。即 gulp intro sample.

然而,许多插件会显示不 return gulp.src() 的文档。即:gulp-less or gulp-angular-templatecache

我应该如何决定我的任务是否应该 return gulp.src()?

您应该始终return gulp.src 以便gulp 可以正确地为您下流。如果流中有大量文件,流可能无法完成。此外,您还可以获得一些其他(次要)好处,例如 运行ner 将记录正确的任务完成时间。

我经常看到人们称赞 gulp 报告的任务需要几微秒才能完成,但他们所做的只是 return 流。但是,如果我们 return 编辑了流,则完成该任务所需的时间也一样长。

不 return 流的另一个问题是设置依赖任务。如果您希望某个任务在另一个任务之前 运行,您需要告诉 gulp 您已完成处理。您可以使用任务的回调函数来执行此操作,也可以通过 returning 流来执行此操作。

我不会 return 流的唯一情况是我在单个任务中有多个流;为此,您可以使用 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 文件以表明这一点。

如果您不 return 流,gulp 将报告构建管道所需的时间。如果您 return 流,它将正确报告执行任务所需的时间。