 Chromium Code Reviews
 Chromium Code Reviews Issue 2179033002:
  Strip comments and whitespace from javascript resources  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master
    
  
    Issue 2179033002:
  Strip comments and whitespace from javascript resources  (Closed) 
  Base URL: https://chromium.googlesource.com/chromium/src.git@master| Index: third_party/closure_compiler/js_minify.py | 
| diff --git a/third_party/closure_compiler/js_minify.py b/third_party/closure_compiler/js_minify.py | 
| new file mode 100755 | 
| index 0000000000000000000000000000000000000000..1d969e88abe375acfbfaeedea340de3fa3447453 | 
| --- /dev/null | 
| +++ b/third_party/closure_compiler/js_minify.py | 
| @@ -0,0 +1,47 @@ | 
| +#!/usr/bin/python | 
| +# Copyright 2016 The Chromium Authors. All rights reserved. | 
| +# Use of this source code is governed by a BSD-style license that can be | 
| +# found in the LICENSE file. | 
| +''' Javascript minifier using the closure compiler | 
| + | 
| +This minifier strips spaces and comments out of Javascript using the closure | 
| +compiler. It takes the original Javascript on standard input, and outputs | 
| +the minified output on standard output. | 
| + | 
| +Any errors or other messages from the compiler are output on standard error. | 
| +''' | 
| + | 
| +import argparse | 
| +import sys | 
| +import tempfile | 
| +from compile2 import Checker | 
| 
Dan Beam
2016/07/28 16:27:05
nit: \n\n between top-level
 
aberent
2016/08/02 11:43:29
Done.
 | 
| + | 
| +def Minify(source): | 
| + parser = argparse.ArgumentParser() | 
| + parser.add_argument("-c", "--closure_args", nargs=argparse.ZERO_OR_MORE, | 
| + help="Arguments passed directly to the Closure compiler") | 
| + args = parser.parse_args() | 
| + closure_args = args.closure_args + ['compilation_level=WHITESPACE_ONLY'] | 
| + with tempfile.NamedTemporaryFile(suffix='.js') as t1, \ | 
| + tempfile.NamedTemporaryFile(suffix='.js') as t2: | 
| 
Dan Beam
2016/07/28 16:27:05
how do these get deleted?  should you be specifyin
 
aberent
2016/08/02 11:43:29
No, it is the default, as you might expect, for te
 | 
| + t1.write(source) | 
| + t1.seek(0) | 
| + checker = Checker() | 
| + (compile_error, compile_stderr) = checker.check( | 
| + [t1.name], out_file=t2.name, closure_args=closure_args) | 
| + if compile_error: | 
| + print compile_stderr | 
| + t2.seek(0) | 
| + result = t2.read() | 
| + return result | 
| + | 
| + | 
| +if __name__ == '__main__': | 
| + orig_stdout = sys.stdout | 
| + result = '' | 
| + try: | 
| + sys.stdout = sys.stderr | 
| + result = Minify(sys.stdin.read()) | 
| + finally: | 
| + sys.stdout = orig_stdout | 
| + print result |