mirror of
https://github.com/ZSCNetSupportDept/WechatTicketSystemFrontend.git
synced 2025-10-27 23:25:05 +08:00
240 lines
6.5 KiB
JavaScript
240 lines
6.5 KiB
JavaScript
/*
|
|
* A gulpfile created by LiuYue(hangxingliu)
|
|
* 2016/03/26 Version 3.0
|
|
* A Gulp Scipt To Quickly Build NetMaintain Platform)
|
|
*/
|
|
//允许了Js文件中使用preprocess
|
|
/*
|
|
* 构建源码说明:
|
|
* *.part.html 会当作HTML部件,在最终的发布版中会被删除(但是可以被include到其他html文件中)
|
|
* *.min.js/*.min.css 会被当作已压缩过了的文件,不予与压缩处理
|
|
*/
|
|
|
|
//加载构建选项版本
|
|
var builder = require('./build_config.js');
|
|
|
|
//源代码目录
|
|
var SRC = builder._src;
|
|
//生成目录
|
|
var DEST = 'dist/tmp';
|
|
//版本名称
|
|
var VERSION = 'temp version';
|
|
//注释信息
|
|
var COMMENT = '临时测试版本';
|
|
//是否压缩CSS和JS
|
|
var MINI_JS = false;
|
|
var MINI_CSS = false;
|
|
var MINI_HTML = false;
|
|
//默认的清理参数
|
|
var OPT_CLEAN = builder._clean_cfg;
|
|
//默认的HTML压缩参数
|
|
var OPT_HTML_COMPRESS = builder._html_compress_cfg;
|
|
|
|
//装载指定的构建配置
|
|
var buildCfgName = process.argv[process.argv.length - 1];
|
|
if (buildCfgName && buildCfgName[0] == '-') {
|
|
buildCfgName = buildCfgName.slice(1);
|
|
if(builder[buildCfgName]){
|
|
var buildCfg = builder[buildCfgName];
|
|
DEST = buildCfg.dest;
|
|
COMMENT = buildCfg.comment;
|
|
VERSION = buildCfg.version;
|
|
MINI_JS = buildCfg.compress[0];
|
|
MINI_CSS = buildCfg.compress[1];
|
|
MINI_HTML = buildCfg.compress[2];
|
|
|
|
console.log('--------------------------');
|
|
console.log('构建配置 "' + COMMENT + '" 加载成功!');
|
|
console.log('--------------------------');
|
|
}else{
|
|
console.log('"' + buildCfgName + '" (指定构建配置不存在!)');
|
|
process.exit();
|
|
}
|
|
}
|
|
|
|
|
|
//默认的Preprocess参数
|
|
var PREPROCESS_PARAMS = {
|
|
context: {
|
|
//时间参数更新引入文件
|
|
TIME: (new Date()).getTime(),
|
|
//版本
|
|
VERSION: VERSION
|
|
}
|
|
};
|
|
|
|
//加载URL参数
|
|
var urls_obj = require('./url_config.js');
|
|
var urls = urls_obj.release_urls;
|
|
for (var url_key in urls) {
|
|
eval("PREPROCESS_PARAMS.context.URL_" + url_key.toUpperCase() + " = urls." + url_key + ";");
|
|
}
|
|
|
|
//加载字段
|
|
var fields_obj = require('./field_config.js');
|
|
var fields = fields_obj.release_fields;
|
|
for (var field_key in fields) {
|
|
eval("PREPROCESS_PARAMS.context.MSG_" + field_key.toUpperCase() + " = fields." + field_key + ";");
|
|
}
|
|
|
|
//console.log(JSON.stringify(PREPROCESS_PARAMS.context,null,4));
|
|
|
|
var HELP = [
|
|
'', '',
|
|
'----------------------',
|
|
'gulp [help]: 查看脚本帮助',
|
|
'gulp (go|build): 编译优化源代码',
|
|
'gulp (watch|live|edit) : 实时编译优化源代码(首先会编译优化一次)',
|
|
'----------',
|
|
'在 (go/watch/live/edit)参数后面可带参数:',
|
|
'\t-XX :表示以XX构建配置构建编译',
|
|
'----------------------',
|
|
'刘越,16/03/26', ''
|
|
];
|
|
|
|
|
|
var DEST_PATH = DEST + '/';
|
|
var SRC_PATH = SRC + '/';
|
|
|
|
//-------------____引入一些必要的Gulp外挂____-------------------
|
|
var g = require("gulp");
|
|
var cleaner = require("gulp-clean");
|
|
var minijs = require('gulp-uglify');
|
|
var minicss = require('gulp-clean-css');
|
|
var minihtml = require('gulp-htmlmin');
|
|
var pp = require('gulp-preprocess');
|
|
var runSeq = require('gulp-sequence');
|
|
|
|
|
|
g.task('default', ['help']);
|
|
g.task('help', function () {
|
|
for (var i = 0; i < HELP.length; i++)
|
|
console.log(HELP[i]);
|
|
});
|
|
|
|
//编译构建
|
|
g.task('build',['go']);
|
|
|
|
g.task('go', runSeq('copy_all_files', ['handler_all_css', 'handler_all_js', 'handler_html']));
|
|
|
|
g.task('live', ['watch']);
|
|
g.task('edit', ['watch']);
|
|
|
|
//监视文件变动
|
|
g.task('watch', ['go'], function () {
|
|
g.watch(SRC_PATH + '**/*', function (event) {
|
|
console.log(event.type + ': ' + event.path);
|
|
if (event.type == 'deleted' || event.type == 'added') return;
|
|
var path = event.path;
|
|
var index = path.lastIndexOf('.');
|
|
var suffix = index == -1 ? '' : path.slice(index + 1);
|
|
var isMin = index == -1 ? false : (path.slice(index - 4, index) == '.min');
|
|
switch (suffix) {
|
|
case 'js':
|
|
g.start(isMin ? 'handler_min_js' : 'handler_js');
|
|
break;
|
|
case 'css':
|
|
g.start(isMin ? 'handler_min_css' : 'handler_css');
|
|
break;
|
|
case 'html':
|
|
g.start('handler_html');
|
|
break;
|
|
default:
|
|
g.start('default');
|
|
}
|
|
});
|
|
});
|
|
|
|
/*--------------------------CSS------------------------------*/
|
|
g.task('handler_all_css', ['handler_css', 'handler_min_css']);
|
|
g.task('handler_css', ['clean_css'], function () {
|
|
var s = g.src([SRC_PATH + '**/*.css', '!' + SRC_PATH + '**/*.min.css']);
|
|
if (MINI_CSS) s = s.pipe(minicss());
|
|
s = s.pipe(g.dest(DEST_PATH));
|
|
return s;
|
|
});
|
|
g.task('clean_css', function () {
|
|
var s = g.src([DEST_PATH + '**/*.css', '!' + DEST_PATH + '**/*.min.css'], {
|
|
'read': false
|
|
}).pipe(cleaner(OPT_CLEAN));
|
|
return s;
|
|
});
|
|
g.task('handler_min_css', ['clean_min_css'], function () {
|
|
var s = g.src(SRC_PATH + '**/*.min.css').pipe(g.dest(DEST_PATH));
|
|
return s;
|
|
});
|
|
g.task('clean_min_css', function () {
|
|
var s = g.src(DEST_PATH + '**/*.min.css', {
|
|
'read': false
|
|
}).pipe(cleaner(OPT_CLEAN));
|
|
return s;
|
|
});
|
|
|
|
/*-------------------Javascript-----------------------------*/
|
|
g.task('handler_all_js', ['handler_js', 'handler_min_js']);
|
|
g.task('handler_js', ['clean_js'], function () {
|
|
var s = g.src([SRC_PATH + '**/*.js', '!' + SRC_PATH + '**/*.min.js']);
|
|
s = s.pipe(pp(PREPROCESS_PARAMS))
|
|
.on('error', function (err) {
|
|
console.error(err);
|
|
this.emit('end');
|
|
});
|
|
if (MINI_JS) s = s.pipe(minijs());
|
|
s = s.pipe(g.dest(DEST_PATH));
|
|
return s;
|
|
});
|
|
g.task('clean_js', function () {
|
|
var s = g.src([DEST_PATH + '**/*.js', '!' + DEST_PATH + '**/*.min.js'], {
|
|
'read': false
|
|
}).pipe(cleaner(OPT_CLEAN));
|
|
return s;
|
|
});
|
|
g.task('handler_min_js', ['clean_min_js'], function () {
|
|
var s = g.src(SRC_PATH + '**/*.min.js').pipe(g.dest(DEST_PATH));
|
|
return s;
|
|
});
|
|
g.task('clean_min_js', function () {
|
|
var s = g.src(DEST_PATH + '**/*.min.js', {
|
|
'read': false
|
|
}).pipe(cleaner(OPT_CLEAN));
|
|
return s;
|
|
});
|
|
|
|
|
|
/*-------------------HTML-----------------------------*/
|
|
g.task('handler_html', ['clean_html'], function () {
|
|
var s = g.src(['./' + SRC_PATH + '**/*.html', '!./' + SRC_PATH + '**/*.part.html'])
|
|
.pipe(pp(PREPROCESS_PARAMS))
|
|
.on('error', function (err) {
|
|
console.error(err);
|
|
this.emit('end');
|
|
});
|
|
if (MINI_HTML) s = s.pipe(minihtml(OPT_HTML_COMPRESS));
|
|
s = s.pipe(g.dest(DEST_PATH));
|
|
return s;
|
|
});
|
|
g.task('clean_html', function () {
|
|
var s = g.src([
|
|
'./' + DEST_PATH + '**/*.html', './' + DEST_PATH + '**/*.html'
|
|
], {
|
|
'read': false
|
|
}).pipe(cleaner(OPT_CLEAN));
|
|
return s;
|
|
});
|
|
|
|
|
|
/*-------------------ALL-----------------------------*/
|
|
g.task('copy_all_files', ['clean_all'], function () {
|
|
var s = g.src('./' + SRC_PATH + '**', {
|
|
'base': ''
|
|
})
|
|
.pipe(g.dest(DEST_PATH));
|
|
return s;
|
|
});
|
|
//清空dist目录
|
|
g.task('clean_all', function () {
|
|
var s = g.src([DEST_PATH + '*'], {
|
|
'read': false
|
|
}).pipe(cleaner(OPT_CLEAN));
|
|
return s;
|
|
}); |