stream-merger

    0.0.1 • Public • Published

    Synopsis

    Merge multiple NodeJS streams together and output as one stream.

    Useful for merging LESS and SASS tasks in Gulp since they build separately but often can be merged and minified together.

    var StreamMerger = require('stream-merger');
    
    // ... assume these dependencies are set up
    
    var lessStream = lessTasks(gulp.src(bundle.lessIn));
    
    var sassStream = sassTasks(gulp.src(bundle.sassIn));
    
    var cssStream = cssTasks(gulp.src(bundle.cssIn));
    
    var combinedStream =
        StreamMerger([lessStream, sassStream, cssStream])
        .pipe(concatCss(bundle.out))
        .pipe(sourcemaps.init())
        .pipe(postcss([ autoprefixer({ browsers: ['last 2 version'] }) ]))
        ;
    
    if(isProd){
        combinedStream = combinedStream
            .pipe(stripMaps())
            .pipe(minifyCSS());
    }
    else {
        combinedStream = combinedStream
            .pipe(sourcemaps.write('.'));
    }
    
    combinedStream
        .pipe(gulp.dest(styleSettings.destPath))
        .on('end', function(){
            bundleComplete()
        });
    

    Consideration

    Internally the separate streams are buffered (well, slurped) using an in-memory array.

    If you have a scenario that doesn't fit or think slurping defeats the purpose of streams, this may not be the right merger for you.

    Dependencies

    There is no direct dependency on gulp. You may use this stream merger anywhere that accepts NodeJS streams.

    Why does the merger block before releasing the merged stream? The original use case for this merger was an environment that needed to know the complete merged stream contents before continuing.

    I now use it for gulp build scripts and it hasn't been an issue (yet). If it becomes one, I'll rewrite.

    License

    MIT +no-false-attribs License

    Install

    npm i stream-merger

    DownloadsWeekly Downloads

    175

    Version

    0.0.1

    License

    MITNFA

    Last publish

    Collaborators

    • hiramsoft