Add support for the closure compiler webservice, using simple optimizations.
Using this build mode, on a lite build, we save approximately 15% after gzip. However, this build method can not be used on full builds, as they exceed the 1000kb limit on the closure compiler webservice. git-svn-id: http://svn.openlayers.org/trunk/openlayers@11443 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+8
-3
@@ -12,6 +12,11 @@ def build(config_file = None, output_file = None, options = None):
|
|||||||
have_compressor.append("jsmin")
|
have_compressor.append("jsmin")
|
||||||
except ImportError:
|
except ImportError:
|
||||||
print "No jsmin"
|
print "No jsmin"
|
||||||
|
try:
|
||||||
|
import closure_ws
|
||||||
|
have_compressor.append("closure_ws")
|
||||||
|
except ImportError:
|
||||||
|
print "No closure_ws"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import minimize
|
import minimize
|
||||||
@@ -39,14 +44,14 @@ def build(config_file = None, output_file = None, options = None):
|
|||||||
|
|
||||||
print "Merging libraries."
|
print "Merging libraries."
|
||||||
merged = mergejs.run(sourceDirectory, None, configFilename)
|
merged = mergejs.run(sourceDirectory, None, configFilename)
|
||||||
|
print "Compressing using %s" % use_compressor
|
||||||
if use_compressor == "jsmin":
|
if use_compressor == "jsmin":
|
||||||
print "Compressing using jsmin."
|
|
||||||
minimized = jsmin.jsmin(merged)
|
minimized = jsmin.jsmin(merged)
|
||||||
elif use_compressor == "minimize":
|
elif use_compressor == "minimize":
|
||||||
print "Compressing using minimize."
|
|
||||||
minimized = minimize.minimize(merged)
|
minimized = minimize.minimize(merged)
|
||||||
|
elif use_compressor == "closure_ws":
|
||||||
|
minimized = closure_ws.minimize(merged)
|
||||||
else: # fallback
|
else: # fallback
|
||||||
print "Not compressing."
|
|
||||||
minimized = merged
|
minimized = merged
|
||||||
print "Adding license file."
|
print "Adding license file."
|
||||||
minimized = file("license.txt").read() + minimized
|
minimized = file("license.txt").read() + minimized
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
|
||||||
|
import httplib, urllib, sys
|
||||||
|
import time
|
||||||
|
# Define the parameters for the POST request and encode them in
|
||||||
|
# a URL-safe format.
|
||||||
|
|
||||||
|
def minimize(code):
|
||||||
|
|
||||||
|
params = urllib.urlencode([
|
||||||
|
('js_code', code),
|
||||||
|
('compilation_level', 'SIMPLE_OPTIMIZATIONS'),
|
||||||
|
('output_format', 'text'),
|
||||||
|
('output_info', 'compiled_code'),
|
||||||
|
])
|
||||||
|
|
||||||
|
t = time.time()
|
||||||
|
# Always use the following value for the Content-type header.
|
||||||
|
headers = { "Content-type": "application/x-www-form-urlencoded" }
|
||||||
|
conn = httplib.HTTPConnection('closure-compiler.appspot.com')
|
||||||
|
conn.request('POST', '/compile', params, headers)
|
||||||
|
response = conn.getresponse()
|
||||||
|
data = response.read()
|
||||||
|
conn.close()
|
||||||
|
print "%.3f seconds to compile", time.time() - t
|
||||||
|
return data
|
||||||
Reference in New Issue
Block a user