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

渗透测
• 阅读 2696

最新 完整 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! 有问题,不懂的,错误,请大家积极留言!

点赞
收藏
评论区
推荐文章
Dax Dax
3年前
前端性能优化
前端性能优化1、减少资源的请求次数和大小压缩合并js和css文件,减少http请求次数和请求资源的大小;在项目中使用webpackglup等打包编译工具2、尽量使用字体图标或者svg图标代替传统的png(jpg)图渲染更快,减少代码体积,且放大不会出现变形等3、使用图片懒加载目的是减少页面第一次加载的http请求次数,实现思路:
李志宽 李志宽
3年前
逆向基础:软件手动脱壳技术入门
前言:大家好,我是周杰伦这里整合了一下之前自己学习软件手工脱壳的一些笔记和脱文,希望能给新学软件逆向和脱壳的童鞋们一点帮助。1一些概念1.1加壳加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段。加壳过的程序可以直接运行,但是不能查看源代码。要经过脱壳才可以查看源代码。加壳是利用特殊的算法,对EXE、DLL文件里的资源进行压缩、加密。类似WIN
Wesley13 Wesley13
3年前
CDH用户及开发者应当关注的CDP组件变化
在Cloudera和Hortonworks合并后,Cloudera公司推出了新一代的数据平台产品CDPDataCenter(以下简称为CDP),在2019年11月30日已经正式GA。CDP的版本号延续了之前CDH的版本号,从7.0开始,目前最新的版本号为7.0.3.0。那么CDP对比之前的ClouderaEnterpriseDataHub(
Stella981 Stella981
3年前
Linux基础之软件包管理
Linux基础之软件包管理一、文件压缩与打包1、概念压缩:指通过某些算法,将文件尺寸进行相应的缩小,同时不损失文件的内容。 打包:指将多个文件(或目录)合并成一个文件,方便传递或部署。压缩文件或打包文件常见的扩展名:\.tar、\.tar.gz、\.gz、\.bz2、\.
Wesley13 Wesley13
3年前
HTTP基础学习之请求行与状态行
HTTP请求行的格式:请求方式 资源路径 HTTP版本号HTTP状态行的格式:HTTP版本号 状态码  原因叙述下面给出一个完整的例子:     服务器:本地tomcat服务    请求行:GET/test.htmlHTTP/1.0(请求服务器根目录下的test.html文件)    状态行:HTTP/1.120
Wesley13 Wesley13
3年前
C#解压或压缩文件夹
C解压或压缩文件夹最近要做一个项目涉及到C中压缩与解压缩的问题的解决方法,大家分享。这里主要解决文件夹包含文件夹的解压缩问题。1)下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中有最新免费版本,“Assemblies(https
Wesley13 Wesley13
3年前
C# 常见面试问题汇总
1、c垃圾回收机制  从以下方面入手展开: 1、压缩合并算法  2、代的机制 3、GC调用终结器 GarbageCollector  .NET采用了和Java类似的方法由CLR(CommonLanguageRuntime)来管理 .NET的GC机制有这样两个问题:  首先,GC并不是能释放所有的资源。它不能自动
Stella981 Stella981
3年前
Nginx学习笔记——gzip
配置详解gzipon|off开启或关闭gzip,默认关闭gzip\_staticon|off对于静态资源预先压缩gzip\_comp\_level4压缩比(19),建议4gzip\_buffers416k 安装原始数据大小以16k为单位的4倍申请内存(压缩,为什么还要4倍申请,不懂。。。)gzip\_min\_
Stella981 Stella981
3年前
ASP.NET Core 静态资源的打包与压缩
以VisualStudioCommunity201715.5.1为例配置文件bundleconfig.json新建一个AspNetCoreMVC项目,项目中会有一个bundleconfig.json文件,该文件就是静态资源打包与压缩的配置文件.通常bundleconfig.js
Wesley13 Wesley13
3年前
5、视频压缩编码的基本概念
视频压缩的目标是在尽可能保证视觉效果的前提下减少视频数据率。视频压缩比一般指压缩后的数据量与压缩前的数据量之比。由于视频是连续的静态图像,因此其压缩编码算法与静态图像的压缩编码算法有某些共同之处,但是运动的视频还有其自身的特性,因此在压缩时还应考虑其运动特性才能达到高压缩的目标。在视频压缩中常需用到以下的一些基本概念:一、有损和无损压缩:在视频压缩中有
Stella981 Stella981
3年前
Linux操作系统软件管理之源码包管理
一、简介sourcecode需要经过GCC,C编译环境编译才能运行,可以设定个人设置,开关功能软件包示例:nginx1.8.1.tar.gz 认识源码包 nginx   1.8.1     .tar.gz            包名   版本号   压缩格
渗透测
渗透测
Lv1
回忆总是会打我一个巴掌指着旧的伤疤不准我遗忘
文章
3
粉丝
0
获赞
0