- github: https://github.com/mishoo/UglifyJS/
- 工具: https://lisperator.net/uglifyjs/
- 简要介绍
UglifyJS是基于 NodeJS 的Javascript语法解析/压缩/格式化工具,它支持任何CommonJS模块系统的Javascript平台。
UglifyJS通过解析重新生成JS代码的语法树。该工具缩短变量名的方法:通过分析代码并生成新的变量名称,依赖于作用域,这些名称通常被简化为单一字符,并能足够智能的处理全局变量,或者eval()调用及with{}块。换句话说,如果在某个作用域内使用了eval()或with{},那么该作用域的所有变量及其父作用域的变量都不会被重新命名,并且所有指向这类变量的引用也不会被改变。
此外,UglifyJS构造一些规则做混淆,例如:
- foo["bar"] ==> foo.bar
- 删除块标记{}
- 合并变量声明: var a = 10; var b = 20; ==> var a=10,b=20;
- 计算简单的常量表达式:1 + 2 * 3 ==> 7
- 连续的语句块会被合并为一个序列
- IF语句的优化:if (foo) bar(); else baz(); ==> foo?bar():baz();等