1 | /*
|
---|
2 | * Copyright 2009 Google Inc.
|
---|
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 | relavant to parsing has been removed. A JSDoc parser and static typing
|
---|
150 | system have been added.
|
---|
151 |
|
---|
152 |
|
---|
153 | -----
|
---|
154 | Code in:
|
---|
155 | lib/libtrunk_rhino_parser_jarjared.jar
|
---|
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: None. We've used JarJar to renamespace the code
|
---|
165 | post-compilation. See:
|
---|
166 | http://code.google.com/p/jarjar/
|
---|
167 |
|
---|
168 |
|
---|
169 | -----
|
---|
170 | Code in:
|
---|
171 | lib/args4j_deploy.jar
|
---|
172 |
|
---|
173 | Args4j
|
---|
174 | URL: https://args4j.dev.java.net/
|
---|
175 | Version: 2.0.9
|
---|
176 | License: MIT
|
---|
177 |
|
---|
178 | Description:
|
---|
179 | args4j is a small Java class library that makes it easy to parse command line
|
---|
180 | options/arguments in your CUI application.
|
---|
181 |
|
---|
182 | Local Modifications: None.
|
---|
183 |
|
---|
184 |
|
---|
185 | -----
|
---|
186 | Code in:
|
---|
187 | lib/guava-r06.jar
|
---|
188 |
|
---|
189 | Guava Libraries
|
---|
190 | URL: http://code.google.com/p/guava-libraries/
|
---|
191 | Version: R6
|
---|
192 | License: Apache License 2.0
|
---|
193 |
|
---|
194 | Description: Google's core Java libraries.
|
---|
195 |
|
---|
196 | Local Modifications: None.
|
---|
197 |
|
---|
198 |
|
---|
199 | -----
|
---|
200 | Code in:
|
---|
201 | lib/hamcrest-core-1.1.jar
|
---|
202 |
|
---|
203 | Hamcrest
|
---|
204 | URL: http://code.google.com/p/hamcrest
|
---|
205 | License: BSD
|
---|
206 | License File: LICENSE
|
---|
207 |
|
---|
208 | Description:
|
---|
209 | Provides a library of matcher objects (also known as constraints or
|
---|
210 | predicates) allowing 'match' rules to be defined declaratively, to be used in
|
---|
211 | other frameworks. Typical scenarios include testing frameworks, mocking
|
---|
212 | libraries and UI validation rules.
|
---|
213 |
|
---|
214 | Local modifications:
|
---|
215 | The original jars contained both source code and compiled classes.
|
---|
216 |
|
---|
217 | hamcrest-core-1.1.jar just contains the compiled classes.
|
---|
218 |
|
---|
219 |
|
---|
220 |
|
---|
221 | -----
|
---|
222 | Code in:
|
---|
223 | lib/jsr305.jar
|
---|
224 |
|
---|
225 | Annotations for software defect detection
|
---|
226 | URL: http://code.google.com/p/jsr-305/
|
---|
227 | Version: svn revision 47
|
---|
228 | License: BSD License
|
---|
229 |
|
---|
230 | Description: Annotations for software defect detection.
|
---|
231 |
|
---|
232 | Local Modifications: None.
|
---|
233 |
|
---|
234 |
|
---|
235 | ----
|
---|
236 | Code in:
|
---|
237 | lib/junit.jar
|
---|
238 |
|
---|
239 | JUnit
|
---|
240 | URL: http://sourceforge.net/projects/junit/
|
---|
241 | Version: 4.5
|
---|
242 | License: Common Public License 1.0
|
---|
243 |
|
---|
244 | Description: A framework for writing and running automated tests in Java.
|
---|
245 |
|
---|
246 | Local Modifications: None.
|
---|
247 |
|
---|
248 |
|
---|
249 | ---
|
---|
250 | Code in:
|
---|
251 | lib/protobuf-java-2.3.0.jar
|
---|
252 |
|
---|
253 | Protocol Buffers
|
---|
254 | URL: http://code.google.com/p/protobuf/
|
---|
255 | Version: 2.3.0
|
---|
256 | License: New BSD License
|
---|
257 |
|
---|
258 | Description: Supporting libraries for protocol buffers,
|
---|
259 | an encoding of structured data.
|
---|
260 |
|
---|
261 | Local Modifications: None
|
---|
262 |
|
---|
263 |
|
---|
264 | ---
|
---|
265 | Code in:
|
---|
266 | lib/ant_deploy.jar
|
---|
267 |
|
---|
268 | URL: http://ant.apache.org/bindownload.cgi
|
---|
269 | Version: 1.6.5
|
---|
270 | License: Apache License 2.0
|
---|
271 | Description:
|
---|
272 | Ant is a Java based build tool. In theory it is kind of like "make"
|
---|
273 | without make's wrinkles and with the full portability of pure java code.
|
---|
274 |
|
---|
275 | Local Modifications:
|
---|
276 | Modified apache-ant-1.6.5/bin/ant to look in the ant.runfiles directory
|
---|
277 |
|
---|
278 |
|
---|
279 | ---
|
---|
280 | Code in:
|
---|
281 | lib/json.jar
|
---|
282 | URL: http://json.org/java/index.html
|
---|
283 | Version: JSON version 2
|
---|
284 | License: MIT license
|
---|
285 | Description:
|
---|
286 | JSON is a set of java files for use in transmitting data in JSON format.
|
---|
287 |
|
---|
288 | Local Modifications: None
|
---|
289 |
|
---|