zoukankan      html  css  js  c++  java
  • 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())
    	           .pipe(gulp.dest('dist/'));
    });
    
    gulp.task('default', gulpSequence('clean', 'css', 'js', 'image', 'revCss', 'rev'));    //按顺序执行任务
    

    ok! 有问题,不懂的,错误,请大家积极留言!

  • 相关阅读:
    # codeforces 1199 D. Welfare State(思维+dp)
    # codeforces 1245 A. A. Good ol' Numbers Coloring(数学)
    # codeforces 1272 F. Two Bracket Sequences(三维dp + bfs)
    关于MySQL无法启动 ERROR 2003 (HY000)
    PAT 甲级测试题目 -- 1002 A+B for Polynomials
    PAT 甲级测试题目 -- 1001 A+B Format
    Flask 中接收 web 端 JSON 的小例子
    一些工具
    MySql的一些常见问题(Windows 和 Ubuntu 下)
    Python学习笔记
  • 原文地址:https://www.cnblogs.com/zhoudaxiaa/p/8670514.html
Copyright © 2011-2022 走看看