gulpfile.js
var gulp=require('gulp');
var htmlMin = require('gulp-htmlmin')
var uglify = require('gulp-uglify');
var babel=require('gulp-babel');
var cleanCSS=require('gulp-clean-css');
var imagemin = require('gulp-imagemin');
var cache = require('gulp-cache');
var clean = require('gulp-clean');
gulp.task('htmlMin', function () {
var options = {
removeComments: true,
collapseWhitespace: true,
collapseBooleanAttributes: true,
removeEmptyAttributes: true,
removeScriptTypeAttributes: true,
removeStyleLinkTypeAttributes: true,
minifyJS: true,
minifyCSS: true
};
return gulp.src('src/*.html')
.pipe(htmlMin(options))
.pipe(gulp.dest('dist'))
});
gulp.task('uglifyJs', function () {
return gulp.src(['src/js/*.js'])
.pipe(babel(
{
presets: ['es2015']
}
))
.pipe(uglify())
.pipe(gulp.dest('dist/js'))
});
// 压缩css任务
gulp.task('css',function(){
return gulp.src('src/style/*.css')
.pipe(cleanCSS())
.pipe(gulp.dest('dist/style'))
});
gulp.task('Imagemin',function(){
return gulp.src('src/img/*.{png,jpg,gif,jpeg,ico}')
.pipe(
cache(
imagemin({
optimizationLevel: 5,
progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染
multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化
})
)
)
.pipe(gulp.dest('dist/img'));
})
// 拷贝fonts文件夹
gulp.task('copyFonts',function(){
return gulp.src('src/fonts/*')
.pipe(gulp.dest('dist/fonts'));
});
gulp.task('clean',function(){
return gulp.src('dist')
.pipe(clean());
})
// gulp.task("default",gulp.series('htmlMin','uglifyJs','css','Imagemin'));
// 这里这样写的意义是有可能会出现一种情况(其他文件处理速度快的已经处理完了,然后clean最后才执行,会把前面处理完的文件删掉,所以要用到gulp.parallel)
gulp.task("default",gulp.series('clean',gulp.parallel('htmlMin','uglifyJs','css','copyFonts','copyLib','copyStatic','Imagemin','Imagemin1')));