marksmall/node-build-web-app

View on GitHub
src/gulp/tasks/images.js

Summary

Maintainability
A
1 hr
Test Coverage
"use strict";

import AbstractTaskLoader from "../abstractTaskLoader";
import config from "../config";
import utils from "../utils";

import eventStream from "event-stream";
import cache from "gulp-cache";
import imageMin from "gulp-imagemin";
import size from "gulp-size";
//import debug from "gulp-debug";

class ImagesTaskLoader extends AbstractTaskLoader {
    registerTask(gulp){
        super.registerTask(gulp);

        gulp.task("images", "Optimize images", () =>{
            // If the app src folder is overridden, then append it to the watch list, otherwise use default.
            let src = null;

            if(gulp.options.folders){
                src = [ gulp.options.folders.app + config.globs.images ];
            } else{
                src = config.images.src;
            }

            return gulp.plumbedSrc(
                src
                )
                // Filter out the empty directories
                .pipe(utils.filterEmptyDirectories(eventStream))

                // Display the files in the stream
                //.pipe(debug({title: "Stream contents:", minimal: true}))

                // Minify and cache
                .pipe(cache(imageMin({
                    progressive: true,
                    interlaced: true
                })))

                // Output files
                .pipe(gulp.dest(config.images.dest))

                // Task result
                .pipe(size({
                    title: "images"
                }));
        });
    }
}

module.exports = new ImagesTaskLoader();