var gulp = require("gulp"), cssmini = require('gulp-minify-css'), //压缩css文件 uglify = require("gulp-uglify"), //压缩js文件 htmlmini = require('gulp-minify-html'), //压缩html文件 imagemin = require('gulp-imagemin'), //压缩图片 rev = require("gulp-rev"), revCollector = require('gulp-rev-collector'), runSequence = require('run-sequence'); //压缩js文件 gulp.task('compress_js',function(){ return gulp.src(['gulptest/no/js/*.js','!gulptest/no/js/*.min.js']) //获取.js文件,同时过滤掉.min.js文件 .pipe(uglify({preserveComments:'some'})) // 使用uglify进行压缩,并保留部分注释 .pipe(gulp.dest('gulptest/yes/js')) .pipe(rev()) //给文件添加hash编码 .pipe(rev.manifest()) //生成rev-mainfest.json文件作为记录 .pipe(gulp.dest('gulptest/manifest/js')); }); //压缩css文件 gulp.task('compress_css', function() { return gulp.src(['gulptest/no/css/*.css','!gulptest/no/css/*.min.css']) .pipe(cssmini()) .pipe(gulp.dest('gulptest/yes/css')) .pipe(rev()) .pipe(rev.manifest()) .pipe(gulp.dest('gulptest/manifest/css')); }); //压缩html文件 gulp.task('compress_html', function () { gulp.src('gulptest/no/*.html') .pipe(htmlmini()) .pipe(gulp.dest('gulptest/yes')); }) //图片压缩 gulp.task('compress_img', function () { gulp.src('gulptest/no/img/*.{png,jpg,gif,ico}') .pipe(imagemin({ optimizationLevel: 0, //类型:Number 默认:3 取值范围:0-7(优化等级) progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片 interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染 multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化 })) .pipe(gulp.dest('gulptest/yes/img')) .pipe(rev()) .pipe(rev.manifest()) .pipe(gulp.dest('gulptest/manifest/img')); }); //Html替换css、js、img文件版本 gulp.task('rev_html_css', function () { return gulp.src(['gulptest/manifest/css/*.json', 'gulptest/no/index.html']) .pipe(revCollector()) //从manifest文件中收集数据并且替换html模板中的链接. .pipe(gulp.dest('gulptest/yes')); }); gulp.task('rev_html_js', function () { return gulp.src(['gulptest/manifest/js/*.json', 'gulptest/yes/index.html']) .pipe(revCollector()) .pipe(gulp.dest('gulptest/yes')); }); gulp.task('rev_html_img', function () { return gulp.src(['gulptest/manifest/img/*.json', 'gulptest/yes/index.html']) .pipe(revCollector()) .pipe(gulp.dest('gulptest/yes')); }); gulp.task('build', function (done) { condition = false; runSequence( 'compress_css', 'rev_html_css', 'compress_js', 'rev_html_js', 'compress_img', 'rev_html_img', 'compress_html', done); });