gulp生成发布包脚本

var formPost = require(‘./tools/submit.js‘);var gulp = require(‘gulp‘),   zip = require(‘gulp-zip‘),   htmlmin = require(‘gulp-htmlmin‘),   cssmin = require(‘gulp-minify-css‘),   imagemin = require(‘gulp-imagemin‘),   pngquant = require(‘imagemin-pngquant‘),   uglify = require(‘gulp-uglify‘),   clean = require(‘gulp-clean‘);   cache = require(‘gulp-cache‘),   replace = require(‘gulp-replace‘);   minimist = require(‘minimist‘),   gulpif = require(‘gulp-if‘),   stripDebug = require(‘gulp-strip-debug‘),   gulpSequence = require(‘gulp-sequence‘),   rev = require(‘gulp-rev‘),   del = require(‘del‘),   vinylPaths = require(‘vinyl-paths‘),         rename = require(‘gulp-rename‘),         //browserSync = require(‘browser-sync‘),         revCollector = require(‘gulp-rev-collector‘);

var configInfo = require("./tools/config_develop.json");var platformType = {   DEVELOP:1,   TEST:2,   PUBLISH:3};

var knownOptions = {   number: [‘ver‘,"env"],   default: {      ver: ‘0.2.0‘,      env:platformType.DEVELOP   }};var processoptions = minimist(process.argv.slice(2), knownOptions);var zipFileName = function(){   return ‘html5_‘+configInfo.name +"_"+ processoptions.ver+‘.zip‘;};gulp.task("clean", function(){    return gulp.src([configInfo.targetdirectory])        .pipe(clean());});

gulp.task(‘minify:html‘, function () {    var options = {        removeComments: true,//清除HTML注释        collapseWhitespace: true,//压缩HTML        collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />        removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />        removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"        removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"        minifyJS: true,//压缩页面JS        minifyCSS: true//压缩页面CSS    };    return gulp.src([‘html/*.html‘, ‘index.html‘, ‘error404.html‘],{ base: "." })//     .pipe(stripDebug())        .pipe(htmlmin(options))        .pipe(gulp.dest(configInfo.targetdirectorywww));});

gulp.task(‘minify:css‘, function () {    return gulp.src([‘css/*.css‘,‘!css/mui.css‘])        .pipe(cssmin())        .pipe(gulp.dest(configInfo.targetdirectorywww + ‘css‘));});

gulp.task(‘minify:image‘, function () {    return gulp.src([‘img/*.{png,jpg,gif}‘, "img/**/*.{png,jpg,gif}"])        .pipe(imagemin({//         use: [pngquant({quality: ‘65-80‘})],            optimizationLevel: 5, //类型:Number  默认:3  取值范围:0-7(优化等级)            progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片            interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染            multipass: true ,//类型:Boolean 默认:false 多次优化svg直到完全优化           use: [pngquant()],        }))        .pipe(gulp.dest(configInfo.targetdirectorywww + ‘img‘));});

gulp.task(‘minify:js‘, function () {    return gulp.src([‘js/*.js‘, ‘js/**/*.js‘, ‘!js/config.js‘, ‘!js/libs/mui.js‘])       .pipe(stripDebug())        .pipe(uglify({//          mangle: true,//类型:Boolean 默认:true 是否修改变量名//       mangle: {except: [‘require‘ ,‘exports‘ ,‘module‘ ,‘$‘]}//排除混淆关键字//          compress: true,//类型:Boolean 默认:true 是否完全压缩//          preserveComments: ‘all‘ //保留所有注释        }))        .pipe(gulp.dest(configInfo.targetdirectorywww + ‘js‘));});

gulp.task(‘copy:files‘, function () {    return gulp.src([‘manifest.json‘, "fonts/**", "!fonts/iconfont.ttf"], {base: "."})        .pipe(gulp.dest(configInfo.targetdirectorywww));});gulp.task(‘copy:filesall‘, function(){   return gulp.src([‘js/**/*‘,‘!js/config.js‘,‘html/*.html‘,‘css/*‘,‘img/**/*‘,‘index.html‘,"error404.html",‘manifest.json‘, "fonts/**"], {base: "."})        .pipe(gulp.dest(configInfo.targetdirectorywww));});gulp.task(‘replace:dev‘, function () {    return gulp.src(["js/config.js"])        .pipe(gulp.dest(configInfo.targetdirectorywww + "js"));});gulp.task(‘replace:test‘, function () {    return gulp.src(["js/config.js"])       .pipe(uglify())       .pipe(replace(new RegExp(/IP:"(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?"/), ‘IP:"http://172.18.0.6/"‘))       .pipe(replace(new RegExp(/IP_CHAT:"(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?"/), ‘IP_CHAT:"http://172.18.0.6/"‘))       .pipe(replace(new RegExp(/IP_FILE:"(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?"/), ‘IP_FILE:"http://172.18.0.6/"‘))       .pipe(replace(new RegExp(/,CHAT:"shengqi-api\/chat\/"/), ‘,CHAT:"chat/"‘))        .pipe(gulp.dest(configInfo.targetdirectorywww + "js"));});

gulp.task(‘replace:publish‘, function () {   return  gulp.src(["js/config.js"])       .pipe(uglify())       .pipe(replace(new RegExp(/IP:"(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?"/), ‘IP:"http://sqapp.miligames.com/"‘))       .pipe(replace(new RegExp(/IP_CHAT:"(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?"/), ‘IP_CHAT:"http://sqapp.miligames.com/"‘))       .pipe(replace(new RegExp(/IP_FILE:"(http|https):\/\/([\w-]+\.)+[\w-]+(\/[\w-./?%&=]*)?"/), ‘IP_FILE:"http://sqapp.miligames.com/"‘))       .pipe(replace(new RegExp(/,CHAT:"shengqi-api\/chat\/"/), ‘,CHAT:"chat/"‘))        .pipe(gulp.dest(configInfo.targetdirectorywww + "js"));});

gulp.task(‘build:version‘, function(){   return gulp.src(["version.txt"])      .pipe(replace(new RegExp(/.*/), processoptions.ver))        .pipe(gulp.dest(configInfo.targetdirectorywww));});

gulp.task(‘upload‘, function(){   formPost.postFormInfo(configInfo.uploadip, processoptions.ver,configInfo.targetzip + "/"+zipFileName(), configInfo);});

gulp.task(‘archive‘, function () {    return gulp.src(configInfo.targetdirectory + ‘**‘)        .pipe(zip(zipFileName()))        .pipe(gulp.dest(configInfo.targetzip));});

gulp.task(‘build:dev‘, gulpSequence(["clean"], [‘copy:filesall‘, "build:version", "replace:dev"], ["archive"], ["upload"]));//gulp.task(‘build:test‘, gulpSequence(["clean"], ["minify:html", ‘minify:css‘,‘minify:js‘,‘minify:image‘,‘copy:files‘, ‘replace:test‘,"build:version"], ["archive"], ["upload"]));gulp.task(‘build:test‘, gulpSequence(["clean"], [‘copy:filesall‘, ‘replace:test‘,"build:version"], ["archive"], ["upload"]));gulp.task(‘build:publish‘, gulpSequence(["clean"], ["minify:html", ‘minify:css‘,‘minify:js‘,‘minify:image‘,‘copy:files‘, ‘replace:publish‘,"build:version"], ["archive"], ["upload"]));

gulp.task("app-build", function(){   switch (processoptions.env) {      case platformType.DEVELOP:         configInfo = require("./tools/config_develop.json");         //gulp.start("build:dev");         gulp.start("b:dev");         break;      case platformType.TEST:         configInfo = require("./tools/config_test.json");         //gulp.start("build:test");         gulp.start("b:test");         break;      case platformType.PUBLISH:         configInfo = require("./tools/config_publish.json");         //gulp.start("build:publish");         gulp.start("b:publish");         break;   }});//=========================================================================================================var cssSrc = ‘css/**/app*.css‘;

gulp.task(‘mfy:image‘, function () {   return gulp.src([‘img/*.{png,jpg,gif}‘, "img/**/*.{png,jpg,gif}"])         .pipe(imagemin({//         use: [pngquant({quality: ‘65-80‘})],            optimizationLevel: 5, //类型:Number  默认:3  取值范围:0-7(优化等级)            progressive: true, //类型:Boolean 默认:false 无损压缩jpg图片            interlaced: true, //类型:Boolean 默认:false 隔行扫描gif进行渲染            multipass: true ,//类型:Boolean 默认:false 多次优化svg直到完全优化            use: [pngquant()],         }))         .pipe(gulp.dest(configInfo.targetdirectorywww + ‘img‘));});

gulp.task(‘css_rev‘, function() {   return gulp.src([cssSrc, ‘css/im_chat.css‘, ‘!css/mui*.css‘])         .pipe(rename(function (path) {            //path.basename += ".min";            path.extname = ".css"         }))         .pipe(rev())         .pipe(gulpif(processoptions.env == platformType.PUBLISH, cssmin()))         .pipe(gulp.dest("css2"))         .pipe(rev.manifest())         .pipe(gulp.dest("rev/css"));});

gulp.task(‘js_rev‘, function() {   return gulp.src([‘js/*.js‘, ‘js/**/*.js‘, ‘!js/cursormanager.js‘, ‘!js/config.js‘, ‘!js/libs/*.js‘], {base: "."})         .pipe(rename(function (path) {            //path.basename += ".min";            path.extname = ".js"         }))         .pipe(rev())         .pipe(gulpif(processoptions.env == platformType.PUBLISH, uglify({})))         .pipe(gulp.dest("js2"))         .pipe(rev.manifest())         .pipe(gulp.dest("rev/js"));});

gulp.task(‘replace_js_rev‘, [‘replace_css_rev‘, ‘js_rev‘], function() {   gulp.src(["rev/js/**/*.json", ‘html2/*.html‘])         .pipe(revCollector({            replaceReved: true         }))         .pipe(gulp.dest("html3"));

   return gulp.src(["rev/js/**/*.json", ‘html2/html/*.html‘])         .pipe(revCollector({            replaceReved: true         }))         .pipe(gulp.dest("html3/html"));});

gulp.task(‘replace_css_rev‘, [‘css_rev‘], function() {   gulp.src(["rev/css/**/*.json", ‘*.html‘])         .pipe(revCollector({            replaceReved: true         }))         .pipe(gulp.dest("html2"));

   return gulp.src(["rev/css/**/*.json", ‘html/*.html‘])         .pipe(revCollector({            replaceReved: true         }))         .pipe(gulp.dest("html2/html"));});

gulp.task(‘cp:html‘, [‘replace_js_rev‘], function() {   var options = {      removeComments: true,//清除HTML注释      collapseWhitespace: true,//压缩HTML      collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input />      removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />      removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"      removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"      minifyJS: true,//压缩页面JS      minifyCSS: true//压缩页面CSS   };

   gulp.src([‘html3/html/*.html‘], {base: "."})         .pipe(rename({dirname: ‘‘})).pipe(gulpif(processoptions.env == platformType.PUBLISH, htmlmin(options)))         .pipe(gulp.dest(configInfo.targetdirectorywww + "html"));

   return gulp.src([‘html3/*.html‘])         .pipe(rename({dirname: ‘‘})).pipe(gulpif(processoptions.env == platformType.PUBLISH, htmlmin(options)))         .pipe(gulp.dest(configInfo.targetdirectorywww));});

gulp.task(‘cp:files‘, [‘cp:reved_css‘,‘replace_css_rev‘], function () {   return gulp.src([‘manifest.json‘, ‘css/mui*.css‘, "fonts/**", "!fonts/iconfont.ttf"], {base: "."})         .pipe(gulp.dest(configInfo.targetdirectorywww));});

gulp.task(‘cp:filesall‘, [‘cp:reved_css‘,‘replace_css_rev‘], function(){   return gulp.src([‘!js/config.js‘,‘css/mui*.css‘,‘img/**/*‘,"error404.html",‘manifest.json‘, "fonts/**"], {base: "."})         .pipe(gulp.dest(configInfo.targetdirectorywww));});

gulp.task(‘cp:unreved_js‘, [‘js_rev‘], function () {   gulp.src([‘js/libs/*.js‘])         .pipe(stripDebug())         .pipe(gulpif(processoptions.env == platformType.PUBLISH, uglify({})))         .pipe(gulp.dest(configInfo.targetdirectorywww + ‘js/libs‘));

   return gulp.src([‘js/cursormanager.js‘])         .pipe(stripDebug())         .pipe(gulpif(processoptions.env == platformType.PUBLISH, uglify({})))         .pipe(gulp.dest(configInfo.targetdirectorywww + ‘js‘));});

gulp.task(‘cp:reved_js‘, [‘js_rev‘], function() {   return gulp.src([‘js2/**/*.js‘])         .pipe(gulp.dest(configInfo.targetdirectorywww));});

gulp.task(‘cp:reved_css‘, [‘css_rev‘], function() {   return gulp.src([‘css2/*‘])         .pipe(rename({dirname: ‘‘}))         .pipe(gulp.dest(configInfo.targetdirectorywww + "css/"));});

gulp.task("cl:tmp", function(){   //gulp.src([configInfo.targetdirectorywww + "html/*.html"]).pipe(vinylPaths(del));   return gulp.src([‘js2‘,‘css2‘,‘html2‘, ‘html3‘, ‘rev‘])         .pipe(clean());});

gulp.task(‘b:dev‘, gulpSequence(["clean"], [‘cp:filesall‘, ‘cp:unreved_js‘,‘cp:html‘, ‘cp:reved_js‘, "build:version", "replace:dev"], ["archive"], ["upload"],[‘cl:tmp‘]));gulp.task(‘b:publish‘, gulpSequence(["clean"], [‘cp:unreved_js‘,‘cp:html‘,‘cp:reved_js‘,‘mfy:image‘,‘cp:files‘, ‘replace:publish‘,"build:version"], ["archive"],[‘cl:tmp‘]));gulp.task(‘b:test‘, gulpSequence(["clean"], [‘cp:filesall‘, ‘cp:unreved_js‘,‘cp:html‘, ‘cp:reved_js‘, ‘replace:test‘,"build:version"], ["archive"],["upload"],[‘cl:tmp‘]));

//gulp.task(‘browser-sync‘, function () {// var files = [//    ‘./**/*.html‘,//    ‘./css/**/*.css‘,//    ‘./imgs/**/*.png‘,//    ‘./js/**/*.js‘// ];

// browserSync.init(files, {//    server: {//       baseDir: ‘./‘//    }// });//});
时间: 2024-08-16 04:24:23

gulp生成发布包脚本的相关文章

给控件做数字签名之一:将控件打包为Web发布包 [转]

微软代码签名证书使用指南 http://www.wotrust.com/support/signcode_guide.htm 签名重要性:http://www.wotrust.com/FAQ/whySigning.htm 中国数字认证网 http://www.ca365.com/ SSL开放论坛 » 软件代码签名 http://www.openssl.com.cn/forum-22-1.html http://www.cnblogs.com/babyt/ 给控件做数字签名之一:将控件打包为Web

npm学习(七)之如何发布包、更新发布包、删除发布包

前言 我们经常使用npm来下载别人的模块或者说包,那么我们如何将自己写的模块上传到npm呢? 了解npm政策 在开始之前,最好回顾一下npm的政策,以防您对站点礼仪.命名.许可或其他指导原则有疑问. 发布包 1.创建用户帐户,要发布,您必须是npm注册表上的用户.如果您不是用户去npmjs.org注册一个npm的账号,或者使用npm adduser创建一个帐户.如果您在站点上创建了一个用户帐户,请使用npm登录从您的终端访问您的帐户. 2.验证邮箱 随便发点东西给邮箱就OK 3.登录 命令:np

生成建表脚本up_CreateTable

已经很久没用使用这个脚本了,今天用到,并做修改,增加了生成扩展属性功能. Go if object_ID('[up_CreateTable]') is not null Drop Procedure [up_CreateTable] Go /* 生成建表脚本(V4.0) Andy 2017-3-28 */ Create Proc up_CreateTable ( @objectList nvarchar(max)=null ) as --With ENCRYPTION /* 参数说明: @obj

生成文件shell脚本以及说明(一)

生成文件shell脚本以及说明: #!/bin/sh file1=$(date +%Y%m%d%H%M%S) #定义变量获取当前时间 ALM_TYPE=BOSS4ZC #定义变量 INSTANCE_ID=62100408#定义变量 STATUS=MAJOR#定义变量 ALM_INFO=Mysql备用主机宕机10.**.62.**,请及时处理.#定义变量 ALM_TIME=$(date +'%Y-%m-%d %H:%M:%S')#定义变量 file2=$INSTANCE_ID.#定义变量 file

利用npm安装/删除/发布/更新/撤销发布包 --社会我npm哥,好用话不多

一.什么是npm? npm是javascript的包管理工具,是前端模块化下的一个标志性产物 简单地地说,就是通过npm下载模块,复用已有的代码,提高工作效率 1.从社区的角度:把针对某一特定问题的模块发布到npm的服务器上,供社区里的其他人下载和使用,同时自己也可以在社区里寻找特定的模块的资源,解决问题 2.从团队的角度:有了npm这个包管理工具,复用团队既有的代码也变的更加地方便 二.利用npm安装包 npm安装的方式--本地安装和全局安装 什么时候用本地/全局安装? 1.当你试图安装命令行

maven 把本地的jar打入到发布包中

很多人用mvn来管理发布包,但是有些jar包并没有发布到公网上,也就是平时我们说的本地的jar包,这下可愁坏了我们了.该怎么办呢? 其实很简单,把这个jar包添加到自己本地的maven库里, 举个例子,我们本地有个jar包叫,hadoop-lzo-0.4.2.0-SNAPSHOT.jar , 想把这个jar打入到自己的发布包中. 可以先执行如下语句 mvn install:install-file -Dfile=hadoop-lzo-0.4.20-SNAPSHOT.jar -DgroupId=c

PowerDesigner 如何生成数据库更新脚本

最近在学习使用PowerDesigner 这个数据库设计工具,发现真的很强大,可以做很多事情,其中就涉及到如果数据库要进行更新了怎么办,主要是增加表,最麻烦的是修改字段名称,增加字段等操作,遇到主要的情况我们应该怎么处理呢?接下来让我们一起揭开谜底吧: 首先,我们要将创建好的PDM模板先保存一份,可以命名为xxx_Old.pdm 修改你的PDM文件,修改后,进行导出物理数据库模型,然后选择工具栏上的database-->apply model changes to database出现一个界面选

PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法

1 PowerDesigner中在生成的数据库脚本中用name列替换comment列作为字段描述的方法如下, 依次打开Tools -- Execute Commands -- Run Script,运行以下脚本: Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl 'the current model 'get the current active model Set mdl = ActiveModel

npm发布包--所遇到的问题

npm发布包: 解决方案--npm adduser的坑:http://www.tuicool.com/articles/FZbYve npm ERR publish 403,nodejs发布包流程 :http://www.cnblogs.com/zhoudaozhang/p/4730070.html npm发布注意事项:http://m.blog.csdn.net/article/details?id=49018629 快速切换npm源的开源工具--nrm: http://www.cnblogs