1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | const gulp = require('gulp'); const uglify = require('gulp-uglify'); const concat = require('gulp-concat'); const babel = require('gulp-babel'); const sourcemaps = require('gulp-sourcemaps'); const cssmin = require('gulp-cssmin'); const imagemin = require('gulp-imagemin'); const htmlmin = require('gulp-htmlmin'); const connect = require('gulp-connect'); const clean = require('gulp-clean'); const revCollector = require('gulp-rev-collector');
const js_path = ['./src/js/**/*.js'];
// 压缩html gulp.task('html', function() { const options = { collapseWhitespace: true, collapseBooleanAttributes: true, removeComments: true, removeEmptyAttributes: true, //清除所有的空属性 removeScriptTypeAttributes: true, removeStyleLinkTypeAttributes: true, minifyJS: true, //压缩html中的javascript代码。 minifyCSS: true //压缩html中的css代码。 }; return gulp.src('./*.html') .pipe(htmlmin(options)) .pipe(revCollector({ replaceReved: true })) .pipe(gulp.dest('./dist')) .pipe(connect.reload()); })
// 压缩js gulp.task('js', () => { return gulp.src('./js/*.js') .pipe(sourcemaps.init()) // babel编译 .pipe(babel({ presets: ['@babel/env'] })) // concat会作合并,合并为1个js .pipe(concat('bundle.min.js')) .pipe(uglify()) .pipe(sourcemaps.write()) .pipe(gulp.dest('./dist/js/')) .pipe(connect.reload()); });
// 压缩style-css gulp.task('style', () => { return gulp .src(['./css/**/*.css']) .pipe(concat('style.min.css')) // cssmin css压缩 .pipe(cssmin()) .pipe(gulp.dest('./dist/css/')) .pipe(connect.reload()); });
// 压缩images gulp.task('images', () => { return gulp .src(['./images/**/*.jpg', './src/img/**/*.gif', './src/img/**/*.png']) .pipe(imagemin([ imagemin.gifsicle({ interlaced: true }), imagemin.jpegtran({ propressive: true }), imagemin.optipng({ optimizationLevel: 5 }) ])) .pipe(gulp.dest('./dist/img/')); });
gulp.task('watchs', function() { gulp.watch('./*.html', gulp.series('html')); gulp.watch('./css/**/*.css', gulp.series('style')); gulp.watch('./js/**/*.js', gulp.series('js')); });
gulp.task('connect:app', function() { connect.server({ root: 'src', //根目录 // ip:'192.168.3.162', 默认localhost livereload: true, //自动更新 port: 9999 //端口 }) })
gulp.task('connect:dist', function(cb) { connect.server({ root: 'src', livereload: true, port: 9999 })
cb(); //执行回调,表示这个异步任务已经完成,起通作用,这样会执行下个任务 })
gulp.task('clean:app', function() { return gulp.src('dist', { read: false }) .pipe(clean()); })
//gulp.series|4.0 依赖顺序执行 //gulp.parallel|4.0 多个依赖嵌套'html','css','js'并行 gulp.task('default', gulp.series(gulp.parallel('html', 'style', 'js', 'images')));
gulp.task('init', gulp.series('clean:app', gulp.parallel('html', 'style', 'js', 'images')));
//启动任务connect:app服务,并监控变化 gulp.task('dev', gulp.series('init', 'connect:app', 'watchs'));
// 生成打包文件 gulp.task('build', gulp.series('init'));
//启动任务connect:dist服务,生成打包文件后,监控其变化 gulp.task('server', gulp.series('connect:dist', 'build', 'watchs')) |