gulpfile.js:

var gulp = require('gulp'),
    imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant'),
    imageminJpegRecompress = require('imagemin-jpeg-recompress'),
    notify = require('gulp-notify'),
    fs=require("fs");


var imageMin=function(source,dist){
    gulp.src(source)
    .pipe(imagemin({ 
      optimizationLevel: 7, 
      progressive: false,
      use: [pngquant({quality: '65-80', speed: 4}),imageminJpegRecompress({loops: 3})]
     }))
    .pipe(gulp.dest(dist))
    .pipe(notify({ message: 'Images task complete:'+source }));
};

//遍历所有文件
var scanFolder=function(path){
    var  walk = function(path){
            files = fs.readdirSync(path);
            files.forEach(function(item) {  
                var tmpPath = path + '/' + item,
                    stats = fs.statSync(tmpPath);

                if (stats.isDirectory()) {  
                    walk(tmpPath); 
                } else { 
                    var imagetype=tmpPath.substr(tmpPath.length-3);
                    var last=tmpPath.lastIndexOf('/');
                    var imgfolder=tmpPath.substr(0,last);

                    if(imagetype=="png"||imagetype=="jpg"||imagetype=="gif"||imagetype=="ttf"){
                      console.log('正在扫描文件' + tmpPath+"父文件夹"+imgfolder);
                      imageMin(tmpPath,imgfolder);
                    }
                    
                }  
            });  
        };  

    walk(path);

    console.log('扫描' + path +'成功');
}

function main(argv){
    console.log("要压缩图片的文件夹:"+argv[0]);
    scanFolder(argv[0]);
}

main(process.argv.slice(2));

使用:

要压缩的图片文件夹如“E:/imagemin/app”

运行命令node gulpfile E:/imagemin/app