gerrit/lib/codemirror/closure.defs
David Ostrovsky 0369183e92 Buck: Set up Closure Compiler tool chain to minify JavaScript code
Extend the build tool chain to minify JavaScript from CodeMirror
distribution.

Currently SIMPLE_OPTIMIZATIONS mode is used, as ADVANCED_OPTIMIZATIONS
doesn't seem to work.  But even with simple mode the minification factor
is:

393441:cm3-verbose.js
167971:cm3_minified.js

And even more for language modes:

56029:perl-verbose.js
10122:perl-minified.js

Disadvantage: Longer compilation time. In follow-up changes we may want
to optimize it by disabling JS minification in development build.

Change-Id: I24790e84484add4f02b3821cca4b69e62fde0c22
2014-06-16 13:56:15 +00:00

51 lines
1.2 KiB
Plaintext

# https://code.google.com/p/closure-compiler/wiki/BinaryDownloads?tm=2
CLOSURE_VERSION = '20140407'
CLOSURE_COMPILER_URL = 'http://dl.google.com/closure-compiler/compiler-%s.zip' % CLOSURE_VERSION
COMPILER = 'compiler.jar'
CLOSURE_COMPILER_SHA1 = 'eeb02bfd45eb4a080b66dd423eaee4bdd1d674e9'
def js_minify(
name,
out,
compiler_args = [],
srcs = [],
generated = []):
cmd = ['$(exe :js_minifier) --js_output_file $OUT'] + compiler_args
if srcs:
cmd.append('$SRCS')
if generated:
cmd.extend(['$(location %s)' % n for n in generated])
genrule(
name = name,
cmd = ' '.join(cmd),
srcs = srcs,
out = out,
)
java_binary(
name = 'js_minifier',
main_class = 'com.google.javascript.jscomp.CommandLineRunner',
deps = [':compiler-jar']
)
prebuilt_jar(
name = 'compiler-jar',
binary_jar = ':compiler',
)
genrule(
name = 'compiler',
cmd = 'unzip -p $(location :closure-compiler-zip) %s >$OUT' % COMPILER,
out = COMPILER,
)
genrule(
name = 'closure-compiler-zip',
cmd = '$(exe //tools:download_file)' +
' -o $OUT' +
' -u ' + CLOSURE_COMPILER_URL +
' -v ' + CLOSURE_COMPILER_SHA1,
out = 'closure-compiler.zip',
)