@MLM имел правильную идею о объединении потоков.
Но не забывайте, что Gulp просто Javascript.
Попробуйте следующее:
//var merge = require('event-stream').merge; //1317 stars on GitHub
var merge = require('merge-stream'); //102 stars on GitHub
//var merge = require('merge2'); //75 stars on GitHub
//var merge = require('stream-series'); //23 stars on GitHub, keeps events in order
//var merge = require('gulp-merge'); //renamed to merge2
/*var merge = require('streamqueue') //54 stars on GitHub
.bind(null, {objectMode: true}); //required for streamqueue vinyl streams
*/
function firstGroup() {
return gulp.src('some/files/*.js')
.pipe(doSomething())
.pipe(concat('some-scripts.js'));
}
gulp.task('firstGroup', funtion() {
return firstGroup()
.pipe(gulp.dest('dest'));
});
function secondGroup() {
return gulp.src('some/other/files/*.js')
.pipe(doSomethingElse())
.pipe(concat('some-other-scripts.js'));
}
gulp.task('secondGroup', function() {
return secondGroup()
.pipe(gulp.dest('dest'));
});
gulp.task('allScripts', function() {
return merge(firstGroup(), secondGroup())
.pipe(concat('all-scripts.js'))
.pipe(gulp.dest('dest'))
});
И, вероятно, назовите свои задачи и связанные с ними функции немного лучше, чем указано выше.
Говоря, это, вероятно, еще проще и более понятно удалить файлы в последней задаче.
var del = require('del');
gulp.task('allScripts', ['firstGroup','secondGroup'], function(done) {
var intermediariesGlob = ['dest/some-scripts.js','dest/some-other-scripts.js'];
gulp.src(intermediariesGlob)
.pipe(concat('all-scripts.js'))
.pipe(gulp.dest('dest'))
.on('end', function() {
del(intermediariesGlob)
.then(function() {done();}); //don't just then(done), the array returned by the promise will become the error parameter of done
});
});