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

时间:2015-01-05 21:38:14

标签: gulp

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

根据this thread,我认为有必要返回 gulp.src()

gulp项目中的示例始终返回gulp.src()。即gulp intro sample

然而,许多插件确实显示了不返回gulp.src()的文档。即:gulp-lessgulp-angular-templatecache

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

2 个答案:

答案 0 :(得分:4)

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

通常情况下,我会看到人们称赞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);
});

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

答案 1 :(得分:1)

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