uglifyjs能夠用來壓縮混淆js文件,發佈release版本應用利器。在StackOverflow瀏覽了一下,相比Google Closure和YUI compressor,uglifyjs被推薦的更多一點,YUI已經再也不更新且部分做者也加入uglifyjs開發了。node
安裝能夠經過npm安裝。git
下載node.js安裝文件:http://nodejs.org/download/github
npm包含在node.js中。npm
安裝uglifyjs:spa
sudo npm install uglify-js@2 -g
@2的做用是指定下載uglify-js 2.x的版本,@1爲下載1.x的版本(github README上說1.x已經再也不開發新功能只fix)code
uglifyjs input1.js [input2.js ...] [options]
能夠用uglifyjs --help查看用法,經常使用選項:blog
-o, --output Output file (default STDOUT). -b, --beautify Beautify output/specify output options. [string] -m, --mangle Mangle names/pass mangler options. [string] -r, --reserved Reserved names to exclude from mangling. -c, --compress Enable compressor/pass compressor options. Pass options like -c hoist_vars=false,if_return=false. Use -c with no argument to use the default compression options. [string]
-c壓縮,-m混淆命名,-b格式化輸出js文件(不然爲只有一行),-o目標輸出文件。ci
--wrap和--export-all選項也頗有用,不過多個文件有前後執行調用順序時可能會有問題。開發
例如,壓縮一個文件:get
uglifyjs main.js -o publish/main.js -c -m -b
壓縮多個文件(支持文件夾通配符):
uglifyjs src/* main.js -o publish/min.js -c -m -b
實際發佈中寫個腳本自動處理壓縮混淆會方便不少。