uglify
js代码压缩
- 将code 转为AST
- 将AST进行优化,生成一个更小的AST
- 将新生成的AST再转为code

uglify 压缩原理
// uglify-js的版本需要为2.x, 3.0之后uglifyjs不再暴露Compressor api// 2.x的uglify不能自动解析es6,所以这里先切换成es5// npm install uglify-js@2.xvar UglifyJS = require('uglify-js');// 原始代码var code = `var a;var x = { b: 123 };a = 123;delete x`;// 通过 UglifyJS 把代码解析为 ASTvar ast = UglifyJS.parse(code);ast.figure_out_scope();// 转化为一颗更小的 AST 树compressor = UglifyJS.Compressor();ast = ast.transform(compressor);// 再把 AST 转化为代码code = ast.print_to_string();// var a,x={b:123};a=123,delete x;console.log("code", code);// a = 123 和 delete x都是表达式语句,所以分号被转换为逗号。// 而var x = {b:123}则因为是声明语句,所以和a=123不会合并,分号不会被转换。// 但var x = {b:123}和第一行var a又触发了另外一条规则,所以第一行和第二行会被合并为var a,x={b:123}
