编译级Javascript压缩混淆工具:Closure-Compiler

韩博简
2023-12-01

真正的编译器

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

 类似资料: