最新 完整 gulp之自动化静态资源压缩合并加版本号
最新 完整 gulp之自动化静态资源压缩合并加版本号
这个方案主要是为了实现js/css/image的压缩合并、自动添加版本号、自动加浏览器前缀和压缩html。
先把下面这里插件 npm i (插件名) -D 安装到项目环境内
- gulp-sequence //顺序执行任务
- gulp-csso //css压缩
- gulp-jshint //js检查
- gulp-uglify'), //js压缩
- gulp-imagemin //压缩图片
- gulp-htmlmin //压缩html
- gulp-clean //清空文件夹
- gulp-rev //更改版本名 md5后缀
- gulp-autoprefixer //加浏览器前缀
- gulp-rev-collector //gulp-rev 的插件,用于html模板更改引用路径
目录结构
|- root
| |-dist //此目录为下面生成的
| |-css
| |-js
| |-images
| |-rev
| |-index.html
| |-node_modules
| |-src //资源目录
| |-css
| |-js
| |-images
| index.html
| gulpfile.js
| package.json
gulpfile.js文件
var gulp = require('gulp'), gulpSequence = require('gulp-sequence'), //同步执行任务 csso = require('gulp-csso'), //css压缩 jshint = require('gulp-jshint'), //js检查 uglify = require('gulp-uglify'), //js压缩 imageMin = require('gulp-imagemin'), //压缩图片 htmlMin = require('gulp-htmlmin'), //压缩html clean = require('gulp-clean'), //清空文件夹 rev = require('gulp-rev'), //更改版本名 md5后缀 autoFx = require('gulp-autoprefixer'), //加浏览器前缀 revCollector = require('gulp-rev-collector'); //gulp-rev 的插件,用于html模板更改引用路径 //清空文件夹 gulp.task('clean', function(){ return gulp.src('dist', {read:false}) .pipe(clean()); }); //压缩css/加浏览器前缀 gulp.task('css', function(){ return gulp.src('src/css/*.css') .pipe(autoFx({ browsers: ['last 2 versions', 'Android >= 4.0'] })) .pipe(csso()) .pipe(rev()) .pipe(gulp.dest('dist/css')) .pipe(rev.manifest()) .pipe(gulp.dest('dist/rev/css')); }); //压缩js gulp.task('js', function(){ return gulp.src('src/js/*.js') .pipe(uglify()) .pipe(rev()) .pipe(gulp.dest('dist/js')) .pipe(rev.manifest()) .pipe(gulp.dest('dist/rev/js')); }); //压缩image gulp.task('image', function(){ return gulp.src('src/images/*.{png,jpg,gif,ico}') .pipe(imageMin({ optimizationLevel: 5, progressive: true, interlaced: true, multipass: true })) .pipe(rev()) .pipe(gulp.dest('dist/images')) .pipe(rev.manifest()) .pipe(gulp.dest('dist/rev/images')); }); //改变css引用路径 gulp.task('revCss',function(){ return gulp.src(['dist/rev/**/*.json','dist/css/*.css']) .pipe(revCollector({ replaceReved: true })) .pipe(gulp.dest('dist/css')); }); //改变html引用路径 gulp.task('rev', function(){ return gulp.src(['dist/rev/**/*.json','src/*.html']) .pipe(revCollector({ replaceReved: true })) .pipe(htmlMin({collapseWhitespace: true})) .pipe(gulp.dest('dist/')); }); gulp.task('default', gulpSequence('clean', 'css', 'js', 'image', 'revCss', 'rev')); //按顺序执行任务
ok! 有问题,不懂的,错误,请大家积极留言!
相关推荐
我有一只小松鼠 2020-02-29
MrLiar 2015-11-09
idnochinese 2019-07-01
UndefineOrNull 2019-07-01
FranksTD 2019-12-19
星辰的笔记 2020-07-04
zhongweinan 2020-06-10
jiangfulai 2020-04-18
hlihaihong 2020-01-13
kaosini 2020-01-12
kaosini 2020-01-12
hlihaihong 2019-12-15
hlihaihong 2019-12-14
我有一只小松鼠 2019-12-14
FranksTD 2019-12-13
SeekerTime 2019-11-17
yuetingzhuying 2015-10-17
福叔 2019-09-06
kaosini 2019-09-06
RainyX 2019-07-01