开发者社区> 周大侠啊> 正文

gulp之自动化静态资源压缩合并加版本号

简介: gulp之自动化压缩合并加版本号 这个方案主要是为了实现js/css/image的压缩合并、自动添加版本号、自动加浏览器前缀和压缩html。 先把下面这里插件 npm i (插件名) -D 安装到项目环境内 gulp-sequence //顺序执行任务 gulp-csso //css压缩 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! 有问题,不懂的,错误,请大家积极留言!

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
检测项目中所有jar包中相同文件冲突
检测项目中所有jar包中相同文件冲突
57 0
requireJs压缩合并路径问题
随着前端开发的重要性,以及业务的复杂性,前端的模块化开发也被大众所接收,最常见的js框架requireJs,一个js文件对应一个模块,方便开发人员调试与维护,但是一个文件对应一个模块增加了http请求,降低了网站的性能。幸运的是requireJs提供了压缩工具r.js(点击下载),r.js需要node(Node 0.4.0 或更高版本,点击下载)环境支持,安装完node就可以在命令行里对前端代码进行优化了。
52 0
git提取出两个版本之间的差异文件并打包
git提取出两个版本之间的差异文件并打包  Linux运用  陈杰斌  3年前 (2013-09-11)  22678浏览  3评论 [编辑] 公司的项目原先是使用svn做版本管理,发布项目的时候是采用打包的方式压缩成zip格式的文件,然后用ftp上传。
1129 0
Grunt压缩、合并js/css文件
一、Grunt简介 Grunt是一个基于命令的javascript工程命令行构建工具。 1. 官网:http://gruntjs.
965 0
requirejs 打包 添加版本号收集资料 待测试
https://www.npmjs.org/package/rjs-optimhttps://www.npmjs.org/package/grunt-requirejs-md5指定js版本号 但不是MD5 没有检测文件是否更新机制https://www.
763 0
ant+yuicompressor 合并、压缩脚本与样式
我使用的是Eclipse编写build.xml,你可以用其它的编辑器,前提是你已经安装了ant     将js目录下的所有.js合并为一个all.js,调用yuicompressor压缩成一个core.js文件。
823 0
静态资源合并解决方案(改进)
最新版本改进了以下几点: ResourceMerge.rar   1) 增加了PreOptTool在上线之前进行脚本样式压缩,并且增加头尾标识/*begin*/和/*end*/ 2) 增加头尾标识的目的是因为发现如果引用的资源是网络资源(比如从CDN获取)的话在网络不稳定的时候会出现文件下载不完整,通过头尾标识可以判断文件是否完整,不完整重试2次,配置文件配置:                 3) 对于负载均衡环境,action=info观察合并情况出现乱跳,统一使用memcache保存这些信息。
577 0
站点静态资源优化合并解决方案
背景   站点经过几年的积累,一个页面上需要加载数十个脚本和样式文件(之后我们把脚本和样式统称为静态资源),在浏览器没有缓存的情况下如此之多的请求数不但会对服务器有比较大的压力(这个问题可以通过CDN或反向代理解决),而且页面呈现也会非常慢(我们知道脚本的下载会阻塞其它资源下载以及页面呈现)。
714 0
+关注
周大侠啊
学海无涯苦作舟
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载