一个复杂的类库通常都包括很多子模块( jquery@git ,yui3@git ),在开发中往往多人对不同的模块进行开发,在发布时通过自动脚本进行代码的压缩,合并等等,最终生成文件数量较少的所谓的打包(build)代码。
jquery,yui3 采用的都是 ant 的 build 架构,kissy 借鉴了这一体系,通过共享公共 build file 以及分别编写各个组件的 build file 来达到发布时自动得到最终的优化代码:
公用 build file
包含任何模块都需要的:
1.打包前准备动作:清除以前打包文件,建立临时目录等
2.合并代码:将必要的分散的子模块代码 concat 在一起
3.压缩代码:对代码进行压缩处理
4.ASCII话,对中文进行unicode转化(\uxxxxx),减少 js 编码对 html 编码的依赖。
5.标记化,从 svn 取出当前 revision 标志最终代码的版本号以及清除 debug 标志代码
6.清理工作:删除中间代码比如合并代码,删除临时目录等
common build.xml
组件build file
在引入公用 build file后,模块自身所做的事就很简单了:
指明自己的子模块代码文件,由公用 build 进行合并。
dom build.xml
build 过程:
由模块内的build file来完成子模块 build 为模块的工作,比如 dom的删除处理子模块,dom的css处理子模块等共同 build 为 dom 模块。
由核心库内的build file来完成模块 build 为库的工作:比如 dom模块,event模块等共同 build 为 core 库
由框架内的 build file来完成核心库与ui库 build 为完整框架的工作:比如 core库,树形组件库等ui库共同build 为完整的 kissy 框架。
当需要发布时,只需执行脚本 build.sh ,按照顺序执行每个build file,最终即可生成各个层级的发布打包代码。