fdm
Version:
基于gulp的1688前端集成化工具
104 lines (85 loc) • 3.28 kB
JavaScript
/**
* dongming.jidm
*/
;
var spawn = require('win-spawn');
var path = require('path');
var colors = require('colors');
var fs = require('fs');
var nopt = require('nopt');
module.exports = {
help: function() {
p(_help());
},
run: function(argv) {
var knownOpts = {
"source": String,
"dest": String,
"appname": String,
"localcommondir": String,
"help": Boolean
};
var shortHands = {
"s": ["--source"],
"d": ["--dest"],
"an": ["--appname"],
"lcd": ["--localcommondir"],
"h": ["--help"]
}
var parsed = nopt(knownOpts, shortHands, argv);
if(parsed.argv.original.length === 1 || parsed.help) {
this.help();
return;
}
var sourceDir = path.resolve(parsed.source || './');
var destDir = path.resolve(parsed.dest || path.join(sourceDir, 'dest'));
var gulpfile = path.join(__dirname,'../configs/build-config.js');
var baseModulePath = path.resolve(__dirname,'../','node_modules');
var appname = parsed.appname || 'qingguo';
var localCommonDir = parsed.localcommondir || ' ';
if( !fs.existsSync(sourceDir) ) {
p('[ERROR]'.red, '你提供的目录不存在,请检查');
p('windows下的目录格式为:', 'D:\\\\aaa\\\\bbb\\\\ccc'.yellow, '或者', 'D:/aaa/bbb/ccc'.yellow);
p('linux下的目录格式为:', 'Users/dongming/aaa/bbb/ccc'.yellow);
return;
}
// console.log('正在更新最新的编译环境...');
// var buildcli = spawn('npm',['update','fdm','-g']);
// buildcli.stderr.on('data', function(data){
// console.log('' + data);
// });
// buildcli.stdout.on('data', function(data){
// console.log('' + data);
// });
// buildcli.on('close',function(){
// p('正在执行build任务队列...');
// spawn('node', [baseModulePath+'/gulp/bin/gulp','pcbuild','--source',sourceDir,'--dest',destDir, '--appname', appname, '--localcommondir', localCommonDir, '--gulpfile', gulpfile], {
// stdio: 'inherit'
// });
// });
p('正在执行build任务队列...');
spawn('node', [baseModulePath+'/gulp/bin/gulp','pcbuild','--source',sourceDir,'--dest',destDir, '--appname', appname, '--localcommondir', localCommonDir, '--gulpfile', gulpfile], {
stdio: 'inherit'
});
}
};
function _help() {
return [
' Useage: fdm build [-s source]',
' [-d dest]',
' [-an appname]',
' [-lcd localcommondir]',
' [-h help]',
'',
' Options:',
'',
' -s | --source 要编译的目录,默认为当前目录',
' -d | --dest 输出目录,默认在编译目录中新建dest目录',
' -an | --appname 要编译的应用名',
' -lcd | --localcommondir 公共资源需要从本地目录获取的,指定公共资源目录',
' -h | --help 打印帮助信息'
].join('\n');
}
function p() {
console.log.apply(console, arguments);
}