forked from seajs/seajs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
build.xml
133 lines (96 loc) · 3.82 KB
/
build.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<project name="seajs-build" default="build" basedir="../">
<description>SeaJS Build File</description>
<dirname property="root.dir" file="${ant.file.seajs-build}/../"/>
<property name="src.dir" location="${root.dir}/src/"/>
<property name="dist.dir" location="${root.dir}/dist/"/>
<property name="tmp.dir" location="${dist.dir}/tmp/"/>
<property name="module.name" value="sea"/>
<property name="version" value="1.3.0-dev"/>
<property name="tools.dir" location="${root.dir}/tools/"/>
<property name="gcc.jar" location="${tools.dir}/compiler.jar"/>
<property name="charset" value="utf-8"/>
<property name="src.file" value="${tmp.dir}/${module.name}-src.js"/>
<property name="debug.file" value="${dist.dir}/${module.name}-debug.js"/>
<property name="compress.plugins" value="plugin-base.js,plugin-combo.js,plugin-i18n.js,plugin-storage.js"/>
<!-- 合并 -->
<target name="concat">
<!-- 目录准备 -->
<mkdir dir="${dist.dir}"/>
<mkdir dir="${tmp.dir}"/>
<!-- 合并 package 文件 -->
<concat destfile="${src.file}"
encoding="${charset}"
outputencoding="${charset}">
<path path="${src.dir}/sea.js"/>
<path path="${src.dir}/util-lang.js"/>
<path path="${src.dir}/util-log.js"/>
<path path="${src.dir}/util-path.js"/>
<path path="${src.dir}/util-fetch.js"/>
<path path="${src.dir}/util-deps.js"/>
<path path="${src.dir}/module.js"/>
<path path="${src.dir}/config.js"/>
<path path="${src.dir}/prepare.js"/>
<path path="${src.dir}/bootstrap.js"/>
</concat>
</target>
<!-- 预处理 -->
<target name="prepare" depends="concat">
<!-- 版本号替换 -->
<replaceregexp file="${src.file}"
match="%VERSION%"
replace="${version}"
flags="g"
encoding="${charset}"/>
<!-- 得到 sea-debug.js -->
<copy file="${src.file}" tofile="${debug.file}" overwrite="true"/>
<!-- %DEBUG% 替换 -->
<replaceregexp file="${src.file}"
match="%DEBUG%"
replace=""
flags="g"
encoding="${charset}"/>
</target>
<target name="prepare_plugins">
<!-- 复制 plugin 到 dist 目录 -->
<copy todir="${dist.dir}" overwrite="true">
<fileset dir="${src.dir}/plugins" includes="*.js"/>
</copy>
<!-- 目录准备 -->
<mkdir dir="${tmp.dir}"/>
<!-- 将需要压缩的 plugin 移动到 tmp 目录 -->
<move todir="${tmp.dir}">
<fileset dir="${dist.dir}" includes="${compress.plugins}"/>
<mapper type="regexp"
from="^(.*)\.(js|css)$"
to="\1-src.\2"/>
</move>
</target>
<!-- 压缩 -->
<target name="compress">
<!-- 用 Google Closure Compiler 压缩 JS -->
<apply executable="java" verbose="true" dest="${dist.dir}" failonerror="true">
<fileset dir="${tmp.dir}" includes="*-src.js"/>
<arg line="-jar"/>
<arg path="${gcc.jar}"/>
<arg line="--externs ${tools.dir}/extern.js"/>
<arg line="--compilation_level SIMPLE_OPTIMIZATIONS"/>
<!-- http://code.google.com/p/closure-compiler/wiki/Warnings -->
<arg line="--warning_level VERBOSE"/>
<arg line="--jscomp_off=checkTypes"/>
<arg line="--jscomp_error=checkDebuggerStatement"/>
<arg line="--js"/>
<srcfile/>
<arg value="--js_output_file"/>
<targetfile/>
<mapper type="regexp" from="^(.*)-src\.js$" to="\1.js"/>
</apply>
</target>
<!-- 扫尾 -->
<target name="destroy">
<delete dir="${tmp.dir}"/>
</target>
<!-- 入口 -->
<target name="build_seajs" depends="prepare,compress,destroy"/>
<target name="build_plugins" depends="prepare_plugins,compress,destroy"/>
<target name="build" depends="prepare,prepare_plugins,compress,destroy"/>
</project>