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: 14.0 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 293