• gulp任务


    项目使用的gulp自动化任务

    //定义输出文件夹名称
    var distFolderH5 = "distH5";
    var distFolderMofang = "distMofang";
    
    //定义根目录路径
    var baseUrl = "../";
    //定义html目录路径
    var tplUrl = "../tpl/";
    //定义js目录路径
    var jsUrl = "../js/";
    //定义css目录路径
    var cssUrl = "../css/";
    //定义sass目录路径
    var sassUrl = "../sass/";
    //定义less目录路径
    var lessUrl = "../less/";
    //定义font目录路径
    var fontUrl = "../fonts/";
    //定义img目录路径
    var imgUrl = "../img/";
    //定义媒体目录路径
    var mediaUrl = "../media/";
    //定义第三方库目录路径
    var libUrl = "../lib/";
    //定义版本号文件输出根目录
    var revDist = "../rev/";
    //定义html版本号输出目录路径
    var revTplUrl = "../rev/tpl/";
    //定义js版本号输出目录路径
    var revJsUrl = "../rev/js/";
    //定义css版本号输出目录路径
    var revCssUrl = "../rev/css/";
    //定义font版本号输出目录路径
    var revFontUrl = "../rev/fonts/";
    //定义img版本号输出目录路径
    var revImgUrl = "../rev/img/";
    //定义媒体文件版本号输出目录路径
    var revMediaUrl = "../rev/media/";
    //定义第三方库版本号输出目录路径
    var revLibUrl = "../rev/lib/";
    
    setDistFolder(distFolderH5);
    
    function setDistFolder(distFolder){
        //定义输出目录名称
        distName = distFolder;
        //定义输出根目录
        dist = "../"+distFolder+"/";
        //定义html输出目录路径
        distTplUrl = "../"+distFolder+"/tpl/";
        //定义js输出目录路径
        distJsUrl = "../"+distFolder+"/js/";
        //定义css输出目录路径
        distCssUrl = "../"+distFolder+"/css/";
        //定义font输出目录路径
        distFontUrl = "../"+distFolder+"/fonts/";
        //定义img输出目录路径
        distImgUrl = "../"+distFolder+"/img/";
        //定义媒体输出目录路径
        distMediaUrl = "../"+distFolder+"/media/";
        //定义第三方库输出目录路径
        distLibUrl = "../"+distFolder+"/lib/";
    }
    
    var gulp = require('gulp'),
        //压缩html,可以压缩页面javascript、css,去除页面空格、注释,删除多余属性等操作
        html = require('gulp-htmlmin'),
        //sass编译
        sass = require('gulp-sass'),
        //对sass路径进行转换
        slash = require('slash'),
        //less编译
        less = require('gulp-less'),
        //css压缩
        minifycss = require('gulp-clean-css'),
        //js压缩
        uglify = require('gulp-uglify'),
        //文件合并
        concat = require('gulp-concat'),
        //文件重命名
        rename = require('gulp-rename'),
        //清空文件夹
        clean = require('gulp-clean'),
        //压缩图片文件(包括PNG、JPEG、GIF和SVG图片)
        imagemin = require('gulp-imagemin'),
        pngquant = require('imagemin-pngquant'),
        //对文件名加MD5后缀
        rev = require('gulp-rev'),
        //路径替换
        revCollector = require('gulp-rev-collector'),
        //上传ftp服务器
        ftp = require('gulp-ftp'),
        //上传sftp服务器
        sftp = require('gulp-sftp'),
        //控制task顺序
        gulpSequence = require('gulp-sequence');
        //创建服务器
        connect = require('gulp-connect');
        //任务提醒
        notify = require('gulp-notify');
    
    //gulp-html参数配置
    var htmlOptions = {
        //清除HTML注释
        removeComments: true,
        //压缩HTML
        //collapseWhitespace: true,
        //省略布尔属性的值 <input checked="true"/> ==> <input />
        collapseBooleanAttributes: true,
        //删除所有空格作属性值 <input id="" /> ==> <input />
        removeEmptyAttributes: true,
        //删除<script>的type="text/javascript"
        removeScriptTypeAttributes: true,
        //删除<style>和<link>的type="text/css"
        removeStyleLinkTypeAttributes: true,
        //压缩页面JS
        //minifyJS: true,
        //压缩页面CSS
        //minifyCSS: true
    };
    
    //tpl模板压缩
    gulp.task('tpl',function(){
       gulp.src(baseUrl+'index.html')
        .pipe(html(htmlOptions))
        //.pipe(rev())
        .pipe(gulp.dest(dist))
        //.pipe(rev.manifest())
        //.pipe(gulp.dest(revDist))
    
       gulp.src(tplUrl+'**/*.html')
        .pipe(html(htmlOptions))
        .pipe(rev())
        .pipe(gulp.dest(distTplUrl))
        .pipe(rev.manifest())
        .pipe(gulp.dest(revTplUrl))
    });
    
    //css压缩添加版本号
    gulp.task('cssMin', function() {
        return gulp.src(cssUrl+'*.css')
            .pipe(minifycss())
            .pipe(rev())
            .pipe(gulp.dest(distCssUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revCssUrl));
    });
    
    //css合并添加版本号
    gulp.task('cssCon', function() {
        //需要处理的css文件,放到一个字符串数组里
        return gulp.src(cssUrl+'*.css')
            //合并后的文件名
            .pipe(concat('build.min.css'))
            //压缩处理成一行
            .pipe(minifycss())
            //文件名加MD5后缀
            .pipe(rev())
            //输出文件本地
            .pipe(gulp.dest(distCssUrl))
            //生成一个rev-manifest.json
            .pipe(rev.manifest())
            //将 rev-manifest.json 保存到 rev 目录内
            .pipe(gulp.dest(revCssUrl+'combine/'));
    });
    
    //复制未压缩的js添加版本号
    gulp.task('jsNotMin', function () {
        return gulp.src([jsUrl+'config.js'])
            .pipe(rev())
            .pipe(gulp.dest(distJsUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revJsUrl+'notmin/'));
    });
    
    //js压缩添加版本号
    gulp.task('jsMin', function () {
        return gulp.src([jsUrl+'*.js', "!"+jsUrl+'config.js'])
            //.pipe(uglify())
            .pipe(rev())
            .pipe(gulp.dest(distJsUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revJsUrl+'min/'));
    });
    
    //js合并添加版本号
    gulp.task('jsCon', function () {
        return gulp.src([jsUrl+'*.js', "!"+jsUrl+'config.js', "!"+jsUrl+'shareMin.js'])
            .pipe(uglify())
            .pipe(concat('build.min.js'))
            .pipe(rev())
            .pipe(gulp.dest(distJsUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revJsUrl+'combine/'));
    });
    
    //图片压缩添加版本号
    gulp.task('img',function() {
        return gulp.src(imgUrl+'**/*')
            .pipe(rev())
            .pipe(imagemin({progressive: true, svgoPlugins:[{removeViewBox:false}], use:[pngquant({quality: '70'})]}))
            .pipe(gulp.dest(distImgUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revImgUrl))
    });
    
    //sass编译
    gulp.task('sass', function () {
        return gulp.src(sassUrl+'*.scss')
            .pipe(sass({outputStyle: 'compressed'}))
            .pipe(gulp.dest(cssUrl))
            //.pipe(connect.reload());
    });
    
    //less编译
    gulp.task('less', function () {
        return gulp.src(lessUrl+'*.less')
            .pipe(less())
            .pipe(gulp.dest(cssUrl));
    });
    
    //添加版本号
    gulp.task('revIndex', function () {
        return gulp.src([revDist+'**/*.json', dist+'index.html'])
            .pipe(revCollector({ replaceReved:true }))
            .pipe(gulp.dest(dist))
    });
    gulp.task('revTpl', function () {
        return gulp.src([revDist+'**/*.json', distTplUrl+'**/*.html'])
            .pipe(revCollector({ replaceReved:true }))
            .pipe(gulp.dest(distTplUrl))
    });
    gulp.task('revCss', function () {
        return gulp.src([revDist+'**/*.json', distCssUrl+'**/*.css'])
            .pipe(revCollector({ replaceReved:true }))
            .pipe(gulp.dest(distCssUrl))
    });
    gulp.task('revJs', function () {
        return gulp.src([revDist+'**/*.json', distJsUrl+'**/*.js'])
            .pipe(revCollector({ replaceReved:true }))
            .pipe(gulp.dest(distJsUrl))
    });
    
    //复制媒体文件和lib文件
    gulp.task('copyFile', function () {
        gulp.src([mediaUrl+'**/*'])
            .pipe(rev())
            .pipe(gulp.dest(distMediaUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revMediaUrl));
    
        gulp.src([fontUrl+'**/*'])
            .pipe(rev())
            .pipe(gulp.dest(distFontUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revFontUrl));
    
        gulp.src([libUrl+'**/*'])
            .pipe(rev())
            .pipe(gulp.dest(distLibUrl))
            .pipe(rev.manifest())
            .pipe(gulp.dest(revLibUrl));
    });
    
    //清空输出目录并删除改目录
    gulp.task('clean', function() {
        return gulp.src([baseUrl+distName, baseUrl+'/rev'], {read: false})
            .pipe(clean({force: true}));
    });
    
    //var ftpConfig = {
    //    "localPath": {
    //        "base": "../dist/"
    //    },
    //    "remotePath": {
    //        "base": "dreamGame",
    //        "project": "/var/disk/web/dev_local/app_web0/m.huanhuba.com/h5dev/dreamGame"
    //    },
    //    "project":{
    //        "ftpTest": {
    //            "use": true,
    //            "host": "120.55.102.1",
    //            "port":"220",
    //            "user": "web",
    //            "pass": "web123!@#"
    //        }
    //    }
    //}
    ////上传ftp服务器
    //gulp.task('ftp', function () {
    //    return gulp.src(ftpConfig)
    //            .pipe(sftp({
    //                host: '120.55.102.1',
    //                port: 220,
    //                user: 'web',
    //                pass: 'web123!@#'
    //            }));
    //})
    
    //使用connect启动一个Web服务器
    gulp.task('connect', function () {
      connect.server({
        //服务器根目录
        root: baseUrl,
        //访问IP
        ip: '127.1.1.1',
        //访问端口
        port: '8080',
        //是否启用热加载
        livereload: false
      });
    });
    
    // gulp.task('reload', function () {
    //   gulp.src(tplUrl+'*.html')
    //     .pipe(connect.reload());
    // });
    
    //打包任务
    //[]中的是异步,运行完后运行rev
    gulp.task("buildH5", function(cb){
        setDistFolder(distFolderH5);
        gulpSequence(['clean'], ['tpl'], ['copyFile', 'cssMin', 'cssCon', 'jsNotMin', 'jsMin', 'jsCon', 'img'], ['revIndex', 'revTpl', 'revCss', 'revJs'])(cb)
    });
    
    gulp.task("buildMofang", function(cb){
        setDistFolder(distFolderMofang);
        gulpSequence(['clean'], ['tpl'], ['copyFile', 'cssMin', 'cssCon', 'jsNotMin', 'jsMin', 'jsCon', 'img'], ['revIndex', 'revTpl', 'revCss', 'revJs'])(cb)
    });
    
    //监控
    gulp.task('watch',function(){
        //gulp.watch(tplUrl+'*.html', ['html']);
        gulp.watch(sassUrl+'**/*.scss', ['sass']);
        //gulp.watch(cssUrl+'**/*.css', ['cssMin', 'cssCon']);
        //gulp.watch(jsUrl+'**/*.js', ['jsMin', 'jsCon']);
    });
    View Code

     package.json需要安装的一些模块

    {
      "name": "projectName",
      "version": "1.0.0",
      "description": "projectDesc",
      "devDependencies": {
        "bower": "^1.7.7",
        "del": "^2.2.0",
        "gulp": "^3.9.1",
        "gulp-clean": "^0.3.2",
        "gulp-clean-css": "^2.0.7",
        "gulp-concat": "^2.6.0",
        "gulp-connect": "^4.1.0",
        "gulp-ftp": "^1.1.0",
        "gulp-htmlmin": "^2.0.0",
        "gulp-imagemin": "^3.0.1",
        "gulp-jshint": "^2.0.0",
        "gulp-less": "^3.1.0",
        "gulp-notify": "^2.2.0",
        "gulp-rename": "^1.2.2",
        "gulp-rev": "^7.0.0",
        "gulp-rev-collector": "^1.0.3",
        "gulp-ruby-sass": "^2.0.6",
        "gulp-sass": "^2.3.1",
        "gulp-sequence": "^0.4.5",
        "gulp-sftp": "^0.1.5",
        "gulp-uglify": "^1.5.3",
        "gulp-util": "^2.2.14",
        "imagemin": "^5.1.1",
        "imagemin-pngcrush": "^4.1.0",
        "imagemin-pngquant": "^5.0.0",
        "jshint": "^2.9.1",
        "shelljs": "^0.3.0",
        "slash": "^1.0.0"
      },
      "dependencies": {
        "textangular": "^1.5.4"
      }
    }
    View Code

    gulp添加版本号还要改一些东西,如下

    http://www.tuicool.com/articles/UbaqyyJ

  • 相关阅读:
    【VS开发】【图像处理】RGB各种格式
    【VS开发】【图像处理】RGB Bayer Color分析
    【VS开发】【图像处理】RGB Bayer Color分析
    【VS开发】ActiveX开发注意事项
    【VS开发】ActiveX开发注意事项
    【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
    【VS开发】 自己编写一个简单的ActiveX控件——详尽教程
    【VS开发】在VS2010中开发ActiveX控件设置测试容器的方式
    vim 编辑 windows下的文本时出现乱码, 修改配置后 已解决
    Centos 中扩展 软件源 的安装 之 epel ( 为yum 扩展软件源 EPEL源 )
  • 原文地址:https://www.cnblogs.com/johnzhu/p/5992341.html
Copyright © 2020-2023  润新知