UNPKG

buildjs-plus

Version:

a plus version for buildjs

195 lines (163 loc) 4.55 kB
/** * * */ 'use strict'; var FS = require('fs'); var PATH = require('path'); var colors = require('colors'); var bjs = {}; /** * 路由 * @return {[type]} [description] */ bjs.run = function() { // read config & exec var cwd = process.cwd(); var confPath = PATH.join(cwd, 'bjs.conf.js'); if (FS.existsSync(confPath)) { eval(FS.readFileSync(confPath, 'utf8')); } var argvs = process.argv; switch (argvs[2]) { case 'init': logParam() ? require('lib/bjs-init/init.js')(argvs[3]) : null; break; case 'watch': logConf() ? require(PATH.join(__dirname, 'lib', FS.readFileSync(PATH.join(__dirname, 'lib', 'config.conf'), 'utf8'))).watch(bjs) : null; break; case 'stop': logConf() ? require(PATH.join(__dirname, 'lib', FS.readFileSync(PATH.join(__dirname, 'lib', 'config.conf'), 'utf8'))).unwatch() : null; break; case 'clear': logConf() ? require(PATH.join(__dirname, 'lib', FS.readFileSync(PATH.join(__dirname, 'lib', 'config.conf'), 'utf8'))).clear() : null; break; case 'change': logParam() ? bjs.change(argvs[3]) : null; break; case 'xgettext': logParam() ? require(PATH.join(__dirname, 'lib/bjs-cmd-command/flow-i18n/task.js')).xgettext(argvs[3], bjs.config) : null; break; case 'gettext': logParam() ? require(PATH.join(__dirname, 'lib/bjs-cmd-command/flow-i18n/task.js')).gettext(argvs[3], bjs.config) : null; break; case '-h': case 'help': help(); break; default: console.log("Warning: bad syntax, use bjs -h to show all command and usage."); break; } function logConf() { if (!FS.existsSync(confPath)) { console.log('[Error]: '.red + 'bjs.conf.js is required!'); return false; } else { return true } } function logParam() { if (!argvs[3]) { console.log('[Error]: '.red + 'lang parameters are required!'); return false; } else { return true; } } function help() { console.log("\ Usage: bjs [type]\n\ options: description:\n\ init 初始化bjs.conf.js文件\n\ watch 开启实时文件监听\n\ stop 当使用bin/bjs.sh运行后台守护进程时,使用此命令来停止后台进程\n\ clear 清除生成的旧的版本号文件\n\ xgettext [lang] 提取待翻译的字段,[lang]支持多语言,不同语言间用", "隔开\n\ gettext [lang] 根据指定语言类型翻译已提取的字段,[lang]同xgettext\n"); } } /** * 配置 * @param {string} key 配置项键值 * @param {string||object} value 配置项的值 */ bjs.set = function(key, value) { if (typeof key === 'object') { for (var itm in key) { if (!(itm in bjs.config)) { return; } bjs.config[itm] = key[itm]; } } else { if (!(key in bjs.config)) { return; } bjs.config[key] = value; } } // 配置项 bjs.config = { // 项目采用的模块加载类型,仅支持cmd、amd、none(目前仅完成cmd) ctype: 'cmd', // 项目模块源路径 src: './src', // 项目模块默认部署路径 dst: '../resource/src', // 默认部署的路径,即是dst的父级目录 dist: '../resource', // tpl输出的路径,适合smarty view: '../views/src', // cmd配置文件路径 conf: './conf/conf.js', // 忽略第三方库文件 ignore: './lib', // 忽略指定的合并压缩的过程的模块 mignore: { js: {}, css: {} }, // 是否使用smarty,如果是,则调用flow-filter重定义view层tpl的路径 smarty: true, // css是否需要合并 cssImport: true, // css是否需要压缩 cssMinify: true, // js是否需要uglify uglify: false, // i18n i18n: { po: './_bjs_/i18n/i18n.{lang}.po', src: './src', msrc: '../resource/src', mdst: '../resource/{lang}', vsrc: '../views/src', vdst: '../views/{lang}' }, // plugins plugins: false, // open version, timestamp default version: false, // use md5 instead of timestamp version md5: false } /** * / * @param {[type]} type [description] * @return {[type]} [description] * @description * change compiler type for project building */ bjs.change = function(type) { switch (type) { case 'cmd': case 'amd': case 'non': FS.writeFileSync(PATH.join(__dirname, 'config.conf'), 'bjs.' + type + '.complier.js', 'utf8'); break; default: break; } } module.exports = bjs;