1 | /*
|
---|
2 | * Copyright 2009 The Closure Compiler Authors.
|
---|
3 | *
|
---|
4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
---|
5 | * you may not use this file except in compliance with the License.
|
---|
6 | * You may obtain a copy of the License at
|
---|
7 | *
|
---|
8 | * http://www.apache.org/licenses/LICENSE-2.0
|
---|
9 | *
|
---|
10 | * Unless required by applicable law or agreed to in writing, software
|
---|
11 | * distributed under the License is distributed on an "AS IS" BASIS,
|
---|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
---|
13 | * See the License for the specific language governing permissions and
|
---|
14 | * limitations under the License.
|
---|
15 | */
|
---|
16 |
|
---|
17 | //
|
---|
18 | // Contents
|
---|
19 | //
|
---|
20 |
|
---|
21 | The Closure Compiler performs checking, instrumentation, and
|
---|
22 | optimizations on JavaScript code. The purpose of this README is to
|
---|
23 | explain how to build and run the Closure Compiler.
|
---|
24 |
|
---|
25 | The Closure Compiler requires Java 6 or higher.
|
---|
26 | http://www.java.com/
|
---|
27 |
|
---|
28 |
|
---|
29 | //
|
---|
30 | // Building The Closure Compiler
|
---|
31 | //
|
---|
32 |
|
---|
33 | There are three ways to get a Closure Compiler executable.
|
---|
34 |
|
---|
35 | 1) Use one we built for you.
|
---|
36 |
|
---|
37 | Pre-built Closure binaries can be found at
|
---|
38 | http://code.google.com/p/closure-compiler/downloads/list
|
---|
39 |
|
---|
40 |
|
---|
41 | 2) Check out the source and build it with Apache Ant.
|
---|
42 |
|
---|
43 | First, check out the full source tree of the Closure Compiler. There
|
---|
44 | are instructions on how to do this at the project site.
|
---|
45 | http://code.google.com/p/closure-compiler/source/checkout
|
---|
46 |
|
---|
47 | Apache Ant is a cross-platform build tool.
|
---|
48 | http://ant.apache.org/
|
---|
49 |
|
---|
50 | At the root of the source tree, there is an Ant file named
|
---|
51 | build.xml. To use it, navigate to the same directory and type the
|
---|
52 | command
|
---|
53 |
|
---|
54 | ant jar
|
---|
55 |
|
---|
56 | This will produce a jar file called "build/compiler.jar".
|
---|
57 |
|
---|
58 |
|
---|
59 | 3) Check out the source and build it with Eclipse.
|
---|
60 |
|
---|
61 | Eclipse is a cross-platform IDE.
|
---|
62 | http://www.eclipse.org/
|
---|
63 |
|
---|
64 | Under Eclipse's File menu, click "New > Project ..." and create a
|
---|
65 | "Java Project." You will see an options screen. Give the project a
|
---|
66 | name, select "Create project from existing source," and choose the
|
---|
67 | root of the checked-out source tree as the existing directory. Verify
|
---|
68 | that you are using JRE version 6 or higher.
|
---|
69 |
|
---|
70 | Eclipse can use the build.xml file to discover rules. When you
|
---|
71 | navigate to the build.xml file, you will see all the build rules in
|
---|
72 | the "Outline" pane. Run the "jar" rule to build the compiler in
|
---|
73 | build/compiler.jar.
|
---|
74 |
|
---|
75 |
|
---|
76 | //
|
---|
77 | // Running The Closure Compiler
|
---|
78 | //
|
---|
79 |
|
---|
80 | Once you have the jar binary, running the Closure Compiler is straightforward.
|
---|
81 |
|
---|
82 | On the command line, type
|
---|
83 |
|
---|
84 | java -jar compiler.jar
|
---|
85 |
|
---|
86 | This starts the compiler in interactive mode. Type
|
---|
87 |
|
---|
88 | var x = 17 + 25;
|
---|
89 |
|
---|
90 | then hit "Enter", then hit "Ctrl-Z" (on Windows) or "Ctrl-D" (on Mac or Linux)
|
---|
91 | and "Enter" again. The Compiler will respond:
|
---|
92 |
|
---|
93 | var x=42;
|
---|
94 |
|
---|
95 | The Closure Compiler has many options for reading input from a file,
|
---|
96 | writing output to a file, checking your code, and running
|
---|
97 | optimizations. To learn more, type
|
---|
98 |
|
---|
99 | java -jar compiler.jar --help
|
---|
100 |
|
---|
101 | You can read more detailed documentation about the many flags at
|
---|
102 | http://code.google.com/closure/compiler/docs/gettingstarted_app.html
|
---|
103 |
|
---|
104 |
|
---|
105 | //
|
---|
106 | // Compiling Multiple Scripts
|
---|
107 | //
|
---|
108 |
|
---|
109 | If you have multiple scripts, you should compile them all together with
|
---|
110 | one compile command.
|
---|
111 |
|
---|
112 | java -jar compiler.jar --js=in1.js --js=in2.js ... --js_output_file=out.js
|
---|
113 |
|
---|
114 | The Closure Compiler will concatenate the files in the order they're
|
---|
115 | passed at the command line.
|
---|
116 |
|
---|
117 | If you need to compile many, many scripts together, you may start to
|
---|
118 | run into problems with managing dependencies between scripts. You
|
---|
119 | should check out the Closure Library. It contains functions for
|
---|
120 | enforcing dependencies between scripts, and a tool called calcdeps.py
|
---|
121 | that knows how to give scripts to the Closure Compiler in the right
|
---|
122 | order.
|
---|
123 |
|
---|
124 | http://code.google.com/p/closure-library/
|
---|
125 |
|
---|
126 | //
|
---|
127 | // Licensing
|
---|
128 | //
|
---|
129 |
|
---|
130 | Unless otherwise stated, all source files are licensed under
|
---|
131 | the Apache License, Version 2.0.
|
---|
132 |
|
---|
133 |
|
---|
134 | -----
|
---|
135 | Code under:
|
---|
136 | src/com/google/javascript/rhino
|
---|
137 | test/com/google/javascript/rhino
|
---|
138 |
|
---|
139 | URL: http://www.mozilla.org/rhino
|
---|
140 | Version: 1.5R3, with heavy modifications
|
---|
141 | License: Netscape Public License and MPL / GPL dual license
|
---|
142 |
|
---|
143 | Description: A partial copy of Mozilla Rhino. Mozilla Rhino is an
|
---|
144 | implementation of JavaScript for the JVM. The JavaScript parser and
|
---|
145 | the parse tree data structures were extracted and modified
|
---|
146 | significantly for use by Google's JavaScript compiler.
|
---|
147 |
|
---|
148 | Local Modifications: The packages have been renamespaced. All code not
|
---|
149 | relevant to parsing has been removed. A JsDoc parser and static typing
|
---|
150 | system have been added.
|
---|
151 |
|
---|
152 |
|
---|
153 | -----
|
---|
154 | Code in:
|
---|
155 | lib/rhino
|
---|
156 |
|
---|
157 | Rhino
|
---|
158 | URL: http://www.mozilla.org/rhino
|
---|
159 | Version: Trunk
|
---|
160 | License: Netscape Public License and MPL / GPL dual license
|
---|
161 |
|
---|
162 | Description: Mozilla Rhino is an implementation of JavaScript for the JVM.
|
---|
163 |
|
---|
164 | Local Modifications: Minor changes to parsing JSDoc that usually get pushed
|
---|
165 | up-stream to Rhino trunk.
|
---|
166 |
|
---|
167 |
|
---|
168 | -----
|
---|
169 | Code in:
|
---|
170 | lib/args4j.jar
|
---|
171 |
|
---|
172 | Args4j
|
---|
173 | URL: https://args4j.dev.java.net/
|
---|
174 | Version: 2.0.16
|
---|
175 | License: MIT
|
---|
176 |
|
---|
177 | Description:
|
---|
178 | args4j is a small Java class library that makes it easy to parse command line
|
---|
179 | options/arguments in your CUI application.
|
---|
180 |
|
---|
181 | Local Modifications: None.
|
---|
182 |
|
---|
183 |
|
---|
184 | -----
|
---|
185 | Code in:
|
---|
186 | lib/guava.jar
|
---|
187 |
|
---|
188 | Guava Libraries
|
---|
189 | URL: http://code.google.com/p/guava-libraries/
|
---|
190 | Version: 13.0.1
|
---|
191 | License: Apache License 2.0
|
---|
192 |
|
---|
193 | Description: Google's core Java libraries.
|
---|
194 |
|
---|
195 | Local Modifications: None.
|
---|
196 |
|
---|
197 |
|
---|
198 | -----
|
---|
199 | Code in:
|
---|
200 | lib/jsr305.jar
|
---|
201 |
|
---|
202 | Annotations for software defect detection
|
---|
203 | URL: http://code.google.com/p/jsr-305/
|
---|
204 | Version: svn revision 47
|
---|
205 | License: BSD License
|
---|
206 |
|
---|
207 | Description: Annotations for software defect detection.
|
---|
208 |
|
---|
209 | Local Modifications: None.
|
---|
210 |
|
---|
211 |
|
---|
212 | -----
|
---|
213 | Code in:
|
---|
214 | lib/jarjar.jar
|
---|
215 |
|
---|
216 | Jar Jar Links
|
---|
217 | URL: http://jarjar.googlecode.com/
|
---|
218 | Version: 1.1
|
---|
219 | License: Apache License 2.0
|
---|
220 |
|
---|
221 | Description:
|
---|
222 | A utility for repackaging Java libraries.
|
---|
223 |
|
---|
224 | Local Modifications: None.
|
---|
225 |
|
---|
226 |
|
---|
227 | ----
|
---|
228 | Code in:
|
---|
229 | lib/junit.jar
|
---|
230 |
|
---|
231 | JUnit
|
---|
232 | URL: http://sourceforge.net/projects/junit/
|
---|
233 | Version: 4.10
|
---|
234 | License: Common Public License 1.0
|
---|
235 |
|
---|
236 | Description: A framework for writing and running automated tests in Java.
|
---|
237 |
|
---|
238 | Local Modifications: None.
|
---|
239 |
|
---|
240 |
|
---|
241 | ---
|
---|
242 | Code in:
|
---|
243 | lib/protobuf-java.jar
|
---|
244 |
|
---|
245 | Protocol Buffers
|
---|
246 | URL: http://code.google.com/p/protobuf/
|
---|
247 | Version: 2.4.1
|
---|
248 | License: New BSD License
|
---|
249 |
|
---|
250 | Description: Supporting libraries for protocol buffers,
|
---|
251 | an encoding of structured data.
|
---|
252 |
|
---|
253 | Local Modifications: None
|
---|
254 |
|
---|
255 |
|
---|
256 | ---
|
---|
257 | Code in:
|
---|
258 | lib/ant.jar
|
---|
259 | lib/ant-launcher.jar
|
---|
260 |
|
---|
261 | URL: http://ant.apache.org/bindownload.cgi
|
---|
262 | Version: 1.8.1
|
---|
263 | License: Apache License 2.0
|
---|
264 | Description:
|
---|
265 | Ant is a Java based build tool. In theory it is kind of like "make"
|
---|
266 | without make's wrinkles and with the full portability of pure java code.
|
---|
267 |
|
---|
268 | Local Modifications: None
|
---|
269 |
|
---|
270 |
|
---|
271 | ---
|
---|
272 | Code in:
|
---|
273 | lib/json.jar
|
---|
274 | URL: http://json.org/java/index.html
|
---|
275 | Version: JSON version 20090211
|
---|
276 | License: MIT license
|
---|
277 | Description:
|
---|
278 | JSON is a set of java files for use in transmitting data in JSON format.
|
---|
279 |
|
---|
280 | Local Modifications: None
|
---|
281 |
|
---|
282 | ---
|
---|
283 | Code in:
|
---|
284 | tools/maven-ant-tasks-2.1.3.jar
|
---|
285 | URL: http://maven.apache.org
|
---|
286 | Version 2.1.3
|
---|
287 | License: Apache License 2.0
|
---|
288 | Description:
|
---|
289 | Maven Ant tasks are used to manage dependencies and to install/deploy to
|
---|
290 | maven repositories.
|
---|
291 |
|
---|
292 | Local Modifications: None
|
---|