[OpenLayers-Dev] Closure Compiler support

christopher.schmidt at nokia.com christopher.schmidt at nokia.com
Thu Feb 24 19:11:58 EST 2011


Hi, 

I have just added support to OpenLayers to support the closure
compiler when building OpenLayers files. To take advantage of 
this support on trunk, you must first place a closure-compiler.jar
file in your tools directory. From the build/README.txt file:

"""
 * closure
   This requires you to have a closure-compiler.jar in your
   tools directory. You can do this by fetching the compiler
   from:

     http://closure-compiler.googlecode.com/files/compiler-latest.zip

   Then unzipping that file, and placing compiler.jar into tools
   and renaming it closure-compiler.jar.
"""

(This will also require you to have support for running java at the
command line.)

To use this compressor once you have downloaded it, you can run the
following build command:

  python build.py -c closure full

For smaller builds (not full builds -- they're too big), you can use
the closure webservice by instead specifying closure_ws:

  python build.py -c closure_ws lite

The output will be the same, but your code will be posted to the closure
web service as part of the build. (The size limit is 1MB.)

Closure is an advanced compiler provided by Google; it is Open Source 
(under the Apache2 license) and offers significant savings over our
default jsmin compiler, lowering compressed build sizes by approximately
15%. The numbers:

Full Builds:

900504  OpenLayers-jsmin.js
719130  OpenLayers-closure.js (20% savings)

200584  OpenLayers-jsmin.js.gz
172663  OpenLayers-closure.js.gz (14% savings)

Lite Builds:

123091  OpenLayers-lite-jsmin.js 
 96678  OpenLayers-lite-closure.js (21% savings)

 30977  OpenLayers-lite-jsmin.js.gz
 26347  OpenLayers-lite-closure.js.gz (15% savings)

Using the closure compiler, all OpenLayers tests continue to pass,
and the examples that I have tested appear to continue to work. The live
examples at http://openlayers.org/dev/examples/ are now using 
a closure-based build as well, so if you have any problems with these
examples, please report them to the mailing list.

As always, using minimal build profiles and gzipping javascript before
delivering it is the best way to minimize Javascript download size.

Thanks!

-- Chris


More information about the Dev mailing list