OYE 模块Build工具

资源下载

OYE Build工具包下载: oye_build.7z

OYE Build工具包应用演示下载: oye_build_demo.7z

应用说明
OYE Build工具包文件清单
build.js - Build脚本
config.js - Build配置
jsmin.js - JS 文件最小化函数
oye.node.js - OYE for node
使用步骤
1.将oye_build文件夹复制到项目所在服务器任意位置
2.用文本编辑器打开config.js文件进行配置
3.执行node命令: node oye_build文件目录/build.js
3.1 build.js 接受一个参数,用于指定build配置文件,如,node oye_build文件目录/build.js mobile.config.js,你可以新建不同的配置文件,build出不同的版本
4.Build结束
config.js配置
//Current file's path
var relativePath = process.argv[1].replace(/([\\\/])[^\\\/]*$/,'$1');

//设定一个相对路径或绝对路径
var setPath = function(sPath, bRelative){
	if(bRelative){
		if(!sPath){
			return '';
		}else{console.log(relativePath + sPath);
			return relativePath + sPath;
		}
	}else{
		if(!sPath){
			throw 'The path setting is invalid';
		}else{
			return sPath;
		}
	}
};

//设定你的AMD模块在项目中的路径
oyeModulePath = setPath('C:\\Users\\hudu\\easytomcat\\webapps\\oye\\tool\\');
//如果你将build工具放置于项目内如,在tool目录下,则可配置相对路径,如setPath('../', true),与上面设置的绝对路径效果一致

//设定项目根目录路径
projectRootPath = setPath('C:\\Users\\hudu\\easytomcat\\webapps\\oye\\');

//设定Build后的文件要保存的目录,线上代码将会从此目录中读取所有的OYE模块,从而与开发目录保持分离
onlinePath = setPath('C:\\Users\\hudu\\easytomcat\\webapps\\oye\\tool\\publish\\');

/*
设定Build后生成的oye配置文件,目的为,为所有模块指定引用路径
其生成的内容形式为:
require.config({
	"app/home/filter":"publish/app/home/home.min.js",
	"app/home/list":"publish/app/home/home.min.js"
}, true);
*/
configFile = setPath('C:\\Users\\hudu\\easytomcat\\webapps\\oye\\tool\\app.config.js');

//设定“配置文件路径前缀”, 如果onlinePath与oyeModulePath不一致, 则必须将不一致的部分作为“配置文件路径前缀”
configFilePathPrefix = 'publish/';

//设定是否生成 xxx.all.js,可用于debug线上的xxx.min.js
bGenerateDebugFile = true;

/*
设定所有需要进行Build的入口模块列表
建议您将所有项目中用到的模块入口文件存储到一个固定的目录,如js/app/
这样你就可以很方便的对整个项目进行控制并方便的进行Build
*/
apps = [
	'app/home',
	'app/detail'
];

//设定不需要进行Build的模块,出现在这里的模块不会被此工具合并压缩,引用路径也不会发生变化
withoutCombinedModules = {
	'jquery':true,
	'component/usersearch':true
};

/*
设定特殊的模块合并规则
key:value,key的匹配过程如下;
先进行整段匹配,如果没有匹配到,则将最后一段替换为*进行再次匹配,直到没有可以替换的为止:
app/home/list -> app/home/* -> app/*
value的意义为:匹配到的模块将存储到的目标文件,如:
'app/home/*':'app/home/home',其意义为,app/home/下的所有模块将合并到 app/home/home.min.js 文件
*/
specialRules = {
	'app/home/*':'app/home/home',
	'util/*':'util/util'
};

//Special config for modules which name cannot match the file
//特殊模块设定,那些需要进行配置才可以进行引用的模块需要列出在此,否则Build脚本无法读取到这些文件
specialConfig = {
	'jquery':'lib/jquery-1.7.1.min.js'
};

//设定JS文件采用JSMinifier进行压缩的等级
levelOfJSMin = 3;
/*
minimal:1,//压缩比:75%
conservative:2,//压缩比:68%
agressive:3//压缩比:67%
*/

//设定JS文件采用UglifyJS进行压缩的配置
uglifyOptions = {
  	strict_semicolons: false,
  	mangle_options: {
        mangle       : true,
        toplevel     : false,
        defines      : null,
        except       : null,
        no_functions : false
    },
  	squeeze_options: {
        make_seqs   : true,
        dead_code   : true,
        no_warnings : false,
        keep_comps  : true,
        unsafe      : false
    },
  	gen_options: {
        indent_start : 0,
        indent_level : 4,
        quote_keys   : false,
        space_colon  : false,
        beautify     : false,
        ascii_only   : false,
        inline_script: false
    }
};