Closure-Compiler 主页:https://code.google.com/p/closure-compiler/
压缩JS脚本的工具有很多,例如JSMin,UglifyJS等,相比于传统的压缩器只做了词法上的扫描,Google Closure-Compiler更类似于是一个编译器,分析AST来进行优化.GCC的压缩混淆除了变量替换,去除注释空格等,在高级模式下,它会破坏性的重写优化代码.对代码压缩做到了极致.优化策略是:
1.更激进的重命名,如 obj.property 改为 a.b,将深度过高的命名空间平坦化等(所以如果引用了外部库时,需要要加入忽略);
2.移除垃圾代码,如删除未被调用的方法定义,警告逻辑死角(return 后的语句等)
3.将函数内联,如 a call b, b call c,a(),那么直接执行 c()。
例如
var x = 17 + 25;
// 编译后
var x=42;
由于改变(破坏)了原有代码结构,直接输出了代码最终运行结果,所以使用起来要严格按照规范执行.
google-closure-compiler --js file.js --js_output_file file.out.js
使用高级模式
google-closure-compiler -O ADVANCED rollup.js --js_output_file rollup.min.js
查看编译选项
google-closure-compiler --help
编译多个文件
google-closure-compiler in1.js in2.js in3.js --js_output_file out.js
https://github.com/lear315/ClosureCompilerJS