zoukankan      html  css  js  c++  java
  • gulp自动化处理

    //范例
    var base = 'src/'; ///项目根目录
    var dist = 'dist/';// 输出目录
    /// 压缩html的选项
    var minHtmlOption = {
        collapseWhitespace: true,
        collapseBooleanAttributes: true,
        removeComments: true,
        removeEmptyAttributes: true,
        removeScriptTypeAttributes: true,
        removeStyleLinkTypeAttributes: true,
        minifyJS: true,
        //minifyCSS: true
    };
    
    function getNowDate() {
        var date = new Date();
        var seperator1 = "";
        var seperator2 = ":";
        var month = date.getMonth() + 1;
        var strDate = date.getDate();
        if (month >= 1 && month <= 9) {
            month = "0" + month;
        }
        if (strDate >= 0 && strDate <= 9) {
            strDate = "0" + strDate;
        }
        var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate
            + "-" + date.getHours() + '' + date.getMinutes()
            + '' + date.getSeconds();
        return currentdate;
    }
    var gulp = require('gulp');
    var gutil = require('gulp-util');
    
    // 引入组件
    var htmlmin = require('gulp-htmlmin'), //html压缩
        cleancss = require('gulp-clean-css'),//css压缩
        jshint = require('gulp-jshint'),//js检测
        jsuglify = require('gulp-uglify'),//js压缩
        concat = require('gulp-concat'),//文件合并
        rename = require('gulp-rename'),//文件更名
        notify = require('gulp-notify'),//提示信息
        less = require('gulp-less'),//  处理 less
        obfuscate = require('gulp-obfuscate'), // js 混淆加密
    
    
        ngAnnotate = require('gulp-ng-annotate'),// 处理angularjs 依赖注入的插件
        stripDebug = require('gulp-strip-debug'),//清除 js 里的 console与 debugger
    
        imagemin = require('gulp-imagemin'),//压缩图片
        clean = require('gulp-clean'),//清空文件夹
        rev = require('gulp-rev'),//更改版本号
        useref = require('gulp-useref'),  // 合并当前页面里的 css 与 script
        revReplace = require('gulp-rev-replace'),  //替换文件路径
        revCollector = require('gulp-rev-collector'),//gulp-rev插件,用于html模板更改引用路径
        gulpSequence = require('gulp-sequence'); //  gulp 事务处理,执行顺序用的
    zip = require('gulp-zip');
    
    
    // 检查js
    gulp.task('lint', function () {
        return gulp.src([base + '/js/*.js', base + '/js/controller/**/*.js'])
            .pipe(jshint())
            .pipe(jshint.reporter('default'))
    
    });
    
    
    //清空文件夹,避免资源冗余
    gulp.task('clean', function () {
        return gulp.src(dist, {read: false}).pipe(clean());
    });
    
    
    gulp.task('obfuscateJS', function () {
        return gulp.src(dist + '/js/controller/*.js')
            //.pipe(jsuglify())  //压缩js
            //.pipe(obfuscate({ replaceMethod: obfuscate.ZALGO })) //加密混淆
            .pipe(obfuscate()) //加密混淆
            .pipe(gulp.dest(dist + '/js/controller'))
    
    });
    
    
    ///处理bootstrap less
    gulp.task('bootstrapLess', function () {
        gulp.src('node_modules/bootstrap/less/bootstrap.less')
            .pipe(less()) //该任务调用的模块
            .pipe(gulp.dest('public_html/js/plugs/bootstrap/css')) //
            .pipe(notify({message: 'bootstrap生成成功!'}));
    });
    
    
    // 默认任务
    gulp.task('default', function () {
        gulp.start('run-sequence')
    
    });
    
    gulp.task('msg', function () {
        return gulp
            .src('')
            .pipe(notify({message: 'SAAF平台构建完成'}));
    })
    
    
    /**************** **********************************************************************************************************************/
    
    /////////   运行顺序     ********************** 主要运行这个就可以产出整个项目
    /// , 'clean-js-rev'
    gulp.task('run-sequence',
        gulpSequence('clean', ['copy-css', 'copy-fonts', 'copy-images', 'copy-plugin', 'copy-help', 'copy-importTemplate','copy-js', 'copy-directive-html',
                'copy-layout-html', 'copy-layout-js', 'copy-app-html', 'copy-app-js', 'copy-index-html','copy-designerModel'],
            'indexRevCss', 'indexRev', 'IndexHtmlMin', 'msg')
    );
    gulp.task('copy-designerModel', function () {
        return gulp.src([base + '/app/sam/templates/processDesigner/designerModel/**/*'])
            .pipe(gulp.dest(dist + '/app/sam/templates/processDesigner/designerModel'))
    });
    
    /// 复制CSS
    gulp.task('copy-css', function () {
        return gulp.src([base + '/css/app_*.css'])
            .pipe(cleancss())  //压缩css
            .pipe(gulp.dest(dist + '/css'))
    });
    
    gulp.task('copy-plugin', function () {
        return gulp.src([base + '/plugin/**/*'])
            .pipe(gulp.dest(dist + '/plugin'))
    });
    gulp.task('copy-help', function () {
        return gulp.src([base + '/help/**/*'])
            .pipe(gulp.dest(dist + '/help'))
    });
    gulp.task('copy-importTemplate', function () {
        return gulp.src([base + '/importTemplate/**/*'])
            .pipe(gulp.dest(dist + '/importTemplate'))
    });
    gulp.task('copy-js', function () {
        return gulp.src([base + '/js/**/*.js'])
            .pipe(stripDebug()) // //除去js代码中的console和debugger输出
            .pipe(ngAnnotate({single_quotes: true}))  /////  处理angularJS 依赖注入  *****
            //.pipe(obfuscate()) //加密混淆
            .pipe(jsuglify())  //压缩js
            .on('error', function(err) {
                gutil.log(gutil.colors.red('[Error]'), err.toString());
            })
            .pipe(gulp.dest(dist + '/js'))
    });
    
    gulp.task('copy-html', function () {
        return gulp.src([base + '/**/*.html', '!' + base + '/js/plugs/**/*.html'])
            .pipe(htmlmin(minHtmlOption)) //压缩html
            .pipe(gulp.dest(dist))
    });
    gulp.task('copy-directive-html', function () {
        return gulp.src([base + '/js/**/*.html'])
            .pipe(htmlmin(minHtmlOption)) //压缩html
            .pipe(gulp.dest(dist + '/js'))
    });
    gulp.task('copy-layout-html', function () {
        return gulp.src([base + '/layout/**/*.html'])
            .pipe(htmlmin(minHtmlOption)) //压缩html
            .pipe(gulp.dest(dist + '/layout'))
    });
    gulp.task('copy-layout-js', function () {
        return gulp.src([base + '/layout/**/*.js'])
            .pipe(stripDebug()) // //除去js代码中的console和debugger输出
            .pipe(ngAnnotate({single_quotes: true}))  /////  处理angularJS 依赖注入  *****
            //.pipe(obfuscate()) //加密混淆
            .pipe(jsuglify())  //压缩js
            .on('error', function(err) {
                gutil.log(gutil.colors.red('[Error]'), err.toString());
            })
            .pipe(gulp.dest(dist + '/layout'))
    });
    
    gulp.task('copy-app-html', function () {
        return gulp.src([base + '/app/**/*.html'])
            .pipe(htmlmin(minHtmlOption)) //压缩html
            .pipe(gulp.dest(dist + '/app'))
    });
    gulp.task('copy-app-js', function () {
        return gulp.src([base + '/app/**/*.js'])
            .pipe(stripDebug()) // //除去js代码中的console和debugger输出
            .pipe(ngAnnotate({single_quotes: true}))  /////  处理angularJS 依赖注入  *****
            //.pipe(obfuscate()) //加密混淆
            .pipe(jsuglify())  //压缩js
            .on('error', function(err) {
                gutil.log(gutil.colors.red('[Error]'), err.toString());
            })
            .pipe(gulp.dest(dist + '/app'))
    });
    
    gulp.task('copy-index-html', function () {
        return gulp.src([base + '/index.html'])
            .pipe(gulp.dest(dist))
    });
    gulp.task('copy-fonts', function () {
        return gulp.src(base + '/fonts/**/*')
            .pipe(gulp.dest(dist + '/fonts'))
    });
    
    gulp.task('copy-images', function () {
        return gulp.src(base + '/img/**/*')
            .pipe(imagemin())
            .pipe(gulp.dest(dist + '/img'));
    });
    
    //打压缩包 zip
    gulp.task('zip', function () {
        return gulp.src(dist + '/**/*')
            //.pipe(zip(dist + '.zip'))
            .pipe(zip('aoyou-' + getNowDate() + '.zip'))
            .pipe(gulp.dest('output'));
    });
    
    gulp.task('removeZip', function () {
        return gulp.src('output/*.*', {read: false}).pipe(clean());
    });
    
    gulp.task('zipAction', function () {
        gulp.start('removeZip');
        gulp.start('zip')
    });
    
    // *********************************************************************** 处理首页
    
    
    // 合并html页面内引用的静态资源文件
    gulp.task('indexMerge', function () {
        return gulp
            .src(base + 'index.html')
            .pipe(useref()) //合并页面资源
            //.pipe(stripDebug()) // //除去js代码中的console和debugger输出
            .pipe(gulp.dest(dist + '/'))
    })
    
    //首页css 加版本
    gulp.task('indexRevCss', function () {
        return gulp
            .src(dist + '/css/*.css') //处理 css
            .pipe(rev())
            .pipe(cleancss())  //压缩css
            .pipe(gulp.dest(dist + '/css')) //输出目录
            .pipe(rev.manifest())  //设置版本号
            .pipe(gulp.dest(dist + '/rev/css')); //版本号输出目录
    });
    
    //首页 JS 加版本
    gulp.task('indexRevJS', function () {
        return gulp
            .src(dist + '/js/haike.js') //处理js
            .pipe(rev())
            .pipe(stripDebug()) ////除去js代码中的console和debugger输出
            .pipe(ngAnnotate({single_quotes: true}))  /////  处理angularJS 依赖注入  *****
            .pipe(jsuglify())  //压缩js     暂不压缩,合并后的JS压缩有报错
            .on('error', function(err) {
                gutil.log(gutil.colors.red('[Error]'), err.toString());
            })
            .pipe(gulp.dest(dist + '/js/')) //输出目录
            .pipe(rev.manifest())  //设置版本号
            .pipe(gulp.dest(dist + '/rev/index/js')); //版本号输出目录
    });
    
    gulp.task('indexRemoveCD', function () {
        return gulp
            .src([dist + '/js/saaf-base.js', dist + '/js/ie8html.js']) //处理js
            .pipe(stripDebug()) ////除去js代码中的console和debugger输出
            .pipe(gulp.dest(dist + '/js/')); //输出目录
    
    })
    
    //通过hash来精确定位到html模板中需要更改的部分,然后将修改成功的文件生成到指定目录
    gulp.task('indexRev', function () {
        return gulp
            .src([dist + '/rev/**/*.json', dist + '/index.html'])
            .pipe(revCollector())
            .pipe(gulp.dest(dist + '/'));
    })
    
    ///压缩首页
    gulp.task('IndexHtmlMin', function () {
        return gulp.src(dist + '/index.html')
            .pipe(htmlmin(minHtmlOption)) //压缩html
            .pipe(gulp.dest(dist));
    });
    
    
    //   *********************************************************************** 处理首页 结束

    好的文章

    https://www.cnblogs.com/2050/p/4198792.html 

    https://www.cnblogs.com/starof/p/5194622.html

  • 相关阅读:
    实验吧之snake
    实验吧之Canon
    实验吧之紧急报文
    实验吧之deeeeeeaaaaaadbeeeeeeeeeef-200
    Centos Linux 使用Yum安装Go和配置环境
    harbor仓库搭建
    教你怎么半天搞定Docker
    教你分分钟搞定Docker私有仓库Registry
    kubernetes学习:CKA考试题
    Python基础知识
  • 原文地址:https://www.cnblogs.com/chenzxl/p/15476011.html
Copyright © 2011-2022 走看看