【前端】ionic实现gulp压缩

前言

     小编接收到一个研究ionic手机端项目实现gulp压缩功能的任务,之前做过angular项目的gulp压缩,原理差不多,借鉴了前人的总结出来的文档,感谢文档的编写者们,让我可以顺利的完成这个任务。

下载gulp

    一、本地ionic项目打包,以这个打包出来的内容为基础进行下面的gulp压缩

1.构建打包——ionic build --test   //--test 指的是测试环境打包
2.全局安装gulp ----cnpm install gulp -g    //全局安装gulp,是为了执行gulp任务
3.本地安装gulp ----cnpm install gulp -save  //本地安装gulp是为了调用gulp插件的功能

二、 打包后的项目目录

 默认的是“www”文件夹,目前没有找到更改路径或文件夹名称的配置文件;

                       

安装gulp相关插件

   安装下面的gulp插件,方便执行对指定文件的压缩,还有更多的命令,下面只是常用的命令;

cnpm install gulp-rename  ---重命名文件
cnpm install gulp-uglify    ---压缩js文件
cnpm insall gulp-imagemin  ---压缩图片
cnpm install gulp-htmlmin   ---压缩HTML
cnpm install gulp-clean-css ---压缩css

新建gulpfile.js文件

  一、新建 

  在src文件的同级目录中新建gulpfile.js文件。

二、复制如下代码

 内容大致如下(其中的路径是自己项目下的路径,各有不同,根据情况进行修改)

var gulp         = require('gulp'),     //本地安装gulp所用到的地方
    uglify       = require('gulp-uglify');
    imagemin     = require('gulp-imagemin');
    htmlmin      = require('gulp-htmlmin');
    cssmin       = require('gulp-clean-css');
/**************************************定义gulp压缩的原文件夹和目标文件夹***************************************************/

var config = {
    src: 'www',//打包后的源目录
    dist: "dist"//gulp压缩的目标目录
}

/**************************************压缩js文件***********************************************************&***********/
    //定义一个testJS任务(自定义任务名称)
    gulp.task('testJS', function () {
      gulp.src(config.src+'/*.js') //该任务针对的文件
        .pipe(uglify())//该任务调用的模块
        .pipe(gulp.dest(config.dist+'/'));//输出路径
    });

    //定义一个testAssets任务压缩js
      gulp.task('testAssets', function () {
      gulp.src(config.src+'/assets/js/*.js') //多个文件以数组形式传入
        .pipe(uglify())
        .pipe(gulp.dest(config.dist+'/assets/js'));
    });

/************************************压缩image文件**********************************************************************/
    //定义一个testImagemin任务压缩image
    gulp.task('testImagemin', function () {
gulp.src(config.src+'/images/**/*.{png,jpg,gif,ico,jpeg}')
        .pipe(imagemin({
          optimizationLevel: 5, //类型:Number  默认:3  取值范围:0-7(优化等级)
          progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片
          interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染
          multipass: true //类型:Boolean 默认:false 多次优化svg直到完全优化
        }))
        .pipe(gulp.dest(config.dist+'/'));
    });

/***********************************压缩html文件*************************************************************************/
    //定义一个testHtmlmin任务压缩html
    gulp.task('testHtmlmin', function () {
      var options = {
        removeComments: true,//清除HTML注释
        collapseWhitespace: true//压缩HTML
      };
      gulp.src(config.src+'/*.html')
        .pipe(htmlmin(options))
        .pipe(gulp.dest(config.dist+'/'));
    });

/*************************************压缩css文件************************************************************************/
    //定义一个testCssmin任务压缩css
    gulp.task('testCssmin', function () {
      gulp.src(config.src+'/assets/css/**/*.css')
        .pipe(cssmin({
          advanced: false,//类型:Boolean 默认:true [是否开启高级优化(合并选择器等)]
          compatibility: 'ie7',//保留ie7及以下兼容写法 类型:String 默认:''or'*' [启用兼容模式; 'ie7':IE7兼容模式,'ie8':IE8兼容模式,'*':IE9+兼容模式]
          keepBreaks: true,//类型:Boolean 默认:false [是否保留换行]
          keepSpecialComments: '*'
          //保留所有特殊前缀 当你用autoprefixer生成的浏览器前缀,如果不加这个参数,有可能将会删除你的部分前缀
        }))
        .pipe(gulp.dest(config.dist+'/assets/css/'));
    });

/*********************************执行copy任务,将生成的压缩后的文件替换原目录中的文件******************************************/
    gulp.task('copy',function(){
      gulp.src(config.dist+'/**/*')   //使用通配符遍历文件夹下所有文件
        .pipe(gulp.dest(config.src+'/'));
});

执行gulp任务

gulp testJS
gulp testAssets
gulp testImagemin
gulp testCssmin
gulp testHtmlmin
gulp copy

小结

    执行过程中,会遇到一些问题,其中自己遇到的问题是由于自己的路径没有写对,最后的copy操作可以使用命令,也可以手动操作。

                                                                                 感谢您的访问!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值