0369183e92
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
51 lines
1.2 KiB
Plaintext
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',
|
|
)
|