入门

安装 (for NodeJS)

You can install UglifyJS from NPM:

npm install uglify-js

but you can also use the Git repository if you feel adventurous:

git clone git://github.com/mishoo/UglifyJS2.git
cd UglifyJS2
npm link

为浏览器构建

Once you installed it for NodeJS, UglifyJS2 provides a quick way to build itself for the browser:

uglifyjs --self -c -m -o /tmp/uglifyjs.js

Now you have it in /tmp/uglifyjs.js and can include that single file in a browser. If you need source maps you'll also have to include the Mozilla source-map module. details to be clarified

输出接口

UglifyJS is written in “classic style”, so to say — it's not using the CommonJS module system (I find it more of an annoyance than of real help, especially for prototyping/development). To load it in NodeJS there's a single file that needs to be require-d: tools/node.js. If you installed it with npm install or npm link as mentioned above, then this file is loaded when you say var UglifyJS = require("uglify-js2"). This single file will load all the others in a separate execution context, so you should not worry about messing your global environment, and it returns a single object where all the global definitions in UglifyJS are exported.

统计

Here are some stats showing where UglifyJS2 stands compared to other minifiers. Show charts.

File Orig. Compressor Min. Gzip Time
dojo.js.uncompressed.js 598715 UglifyJS2 114600 41344 1.696s
UglifyJS1 117356 42001 1.633s
Closure 114148 41492 8.104s
Esmangle 119048 43120 5.586s
esprima.js 126268 UglifyJS2 46672 13105 0.696s
UglifyJS1 46384 13149 0.594s
Closure 45669 12982 4.121s
Esmangle 46040 13199 2.620s
jquery-1.8.2.js 266882 UglifyJS2 92387 33146 1.604s
UglifyJS1 93381 33288 1.539s
Closure 93557 33781 6.085s
Esmangle 93159 34054 4.444s
modernizr.custom.15975.js 29277 UglifyJS2 14435 5854 0.366s
UglifyJS1 14505 5869 0.262s
Closure 14401 5871 2.795s
Esmangle 14465 5909 0.592s
mootools-core-1.4.5-full-nocompat.js 113999 UglifyJS2 83868 26551 1.079s
UglifyJS1 84465 26624 1.095s
Closure 83555 26834 5.242s
Esmangle 84709 27079 2.671s
processing-1.4.1.js 421496 UglifyJS2 208587 61218 3.461s
UglifyJS1 208675 61162 4.003s
Closure 205118 61056 6.907s
Esmangle 213476 62391 32.281s
prototype.js 180829 UglifyJS2 91656 28354 1.158s
UglifyJS1 93311 28516 1.086s
Closure 89953 28190 5.773s
Esmangle 92981 29033 3.236s
raphael.js 221137 UglifyJS2 88481 30831 1.519s
UglifyJS1 89360 31022 1.217s
Closure 88411 31058 6.218s
Esmangle 89453 31942 3.911s
underscore.js 40966 UglifyJS2 13292 4526 0.382s
UglifyJS1 13400 4534 0.343s
Closure 13391 4626 2.496s
Esmangle 13525 4767 0.655s