我有三个gulp任务,其中最后一个任务(allScripts
)首先运行两个相关任务,然后连接它们的结果文件。
在最后一个任务中,我可以删除前两个任务中的两个结果文件,并从此与合并后的文件幸福地生活在一起。
但我在想,是否可以通过某种方式将这两个临时文件“直接”导入allScripts
任务来避免它们?
gulp.task('firstGroup', function() {
return gulp.src('some/files/*.js')
.pipe(doSomething())
.pipe(concat('some-scripts.js'))
.pipe(gulp.dest('dest'));
});
gulp.task('secondGroup', function() {
return gulp.src('some/other/files/*.js')
.pipe(doSomethingElse())
.pipe(concat('some-other-scripts.js'))
.pipe(gulp.dest('dest'));
});
gulp.task('allScripts', ['firstGroup','secondGroup'], function() {
return gulp.src(['dest/some-scripts.js','dest/some-other-scripts.js'])
.pipe(concat('all-scripts.js'))
.pipe(gulp.dest('dest'))
// delete the two src-files
});
2条答案
按热度按时间xdyibdwo1#
如果每件事都可以是一个单一的任务,你可以使用
gulp-merge
插件将多个流合并成一个。如果任务需要保持分离,下面也有一个解决方案,但请注意,这个方法是一个黑客,因为它依赖于Gulp中的一个公开属性。如果没有一个黑客解决方案,在另一个任务中使用一个任务的输出,将需要中间存储,就像你对文件所做的那样。
单一任务解决方案:
以下是使用
gulp-merge
的准系统演示:在您的情况下,使用问题中的代码,它看起来像:
多任务解决方案:
如果你的任务结构是这样的,你不能用上面的方法把它们合并成一个任务,这是你最好的选择。从某种意义上说,它有点笨拙,因为它依赖于
Gulp.tasks
,这是一个非标准的公开属性。不能保证它能在Gulp的未来版本中工作(目前用Gulp v3.8.10测试)。这个代码片段依赖于
event-stream
包,因为它更健壮,我在runTasksAndGetStreams
函数中使用了它们的一些实用程序。fdbelqdn2#
@传销有正确的想法与组合流。
但是不要忘记Gulp只是Javascript。
试试这个:
可能你的任务和它们的相关函数的名称比上面的好一点。
也就是说,在最后一个任务中删除文件可能更容易、更清楚。