Search code examples
javascriptgulp

Combine two gulp tasks into one JS file


I have the following two tasks:

gulp.task('compress', () => {
    return gulp.src('app/static/angular/**/*.js')
        .pipe(concat('build.js'))
        .pipe(gulp.dest('./app/static'));
});

gulp.task('templates', () => {
    return gulp.src('app/static/angular/**/*.html')
        .pipe(htmlmin())
        .pipe(angularTemplateCache('templates.js', {
            module: 'myApp',
            root: '/static/angular'
        }))
        .pipe(gulp.dest('./app/static'))
});

And it works fine, but I want them both concatenated into build.js -- how can I combine these two?


Solution

  • In the end I used merge-stream to merge the two streams into one output file:

    var gulp = require('gulp');
    var concat = require('gulp-concat');
    var htmlmin = require('gulp-htmlmin');
    var angularTemplateCache = require('gulp-angular-templatecache');
    var merge = require('merge-stream');
    
    gulp.task('build', () => {
        var code = gulp.src('app/static/angular/**/*.js');
    
        var templates = gulp.src('app/static/angular/**/*.html')
            .pipe(htmlmin())
            .pipe(angularTemplateCache({
                module: 'myApp',
                root: '/static/angular'
            }));
    
        return merge(code, templates)
            .pipe(concat('build.js'))
            .pipe(gulp.dest('./app/static'));
    });
    
    gulp.task('default', ['build']);