我对gulp.src()
感到困惑。
根据this thread,我认为有必要返回 gulp.src()
。
gulp项目中的示例始终返回gulp.src()
。即gulp intro sample。
然而,许多插件确实显示了不返回gulp.src()
的文档。即:gulp-less或gulp-angular-templatecache
我该如何判断我的任务是否应该返回gulp.src()?
答案 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将报告构建管道所需的时间。如果您返回流,它将正确报告执行任务所需的时间。