用UglifyJS2合併壓縮混淆JS代碼

目的:
合併、混淆、壓縮

 

 

UglifyJS是UglifyJS2的前身,是一個Javascript開發的通用的語法分析、代碼壓縮、代碼優化的一個工具包。UglifyJS是基於Nodejs環境開發,支持CommonJS模塊系統的任意的Javascript平臺。

UglifyJS的實現主要分爲2部分:javascript

  • 生成JS代碼的抽象語法樹(AST),經過parse-js.js完成。
  • 遍歷AST語法樹,作各類操做,好比自動縮進、縮短變量名、刪除塊括號{}、去空格、常量表達式、連續變量聲明、語塊合併、去掉沒法訪問的代碼等,經過process.js完成。

UglifyJS2是做者對UglifyJS的重寫,是徹底的重寫,而不單單是升級。從UglifyJS2官司方網頁介紹看,UglifyJS2把整個的JS壓縮過程,作了更進一步的細化。java


UglifyJS2安裝

系統環境:node

  • win7 64bit
  • Nodejs:v0.10.5
  • Npm:1.2.19

UglifyJS2的安裝很是簡單,和Nodejs的其餘包同樣,全局安裝使用以下命令。git

npm install uglify-js -g

也能夠經過github下載源代碼安裝。github

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

咱們在使用UglifyJS2的時候主要有2種方式,一種是經過命令行操做,對指定的JS文件進行壓縮;另外一種是經過程序的API調用,對文件或內存中的JS代碼進行壓縮。npm

 

 

對命令參數進行解釋:json

  • –source-map [string],生成source map文件。
  • –source-map-root [string], 指定生成source map的源文件位置。
  • –source-map-url [string], 指定source map的網站訪問地址。
  • –source-map-include-sources,設置源文件被包含到source map中。
  • –in-source-map,自定義source map,用於其餘工具生成的source map。
  • –screw-ie8, 用於生成徹底兼容IE6-8的代碼。
  • –expr, 解析一個表達式或JSON。
  • -p, –prefix [string], 跳過原始文件名的前綴部分,用於指定源文件、source map和輸出文件的相對路徑。
  • -o, –output [string], 輸出到文件。
  • -b, –beautify [string], 輸出帶格式化的文件。
  • -m, –mangle [string], 輸出變量名替換後的文件。
  • -r, –reserved [string], 保留變量名,排除mangle過程。
  • -c, –compress [string], 輸出壓縮後的文件。
  • -d, –define [string], 全局定義。
  • -e, –enclose [string], 把全部代碼合併到一個函數中,並提供一個可配置的參數列表。
  • –comments [string], 增長註釋參數,如@license、@preserve。
  • –preamble [string], 增長註釋描述。
  • –stats, 顯示運行狀態。
  • –acorn, 用Acorn作解析。
  • –spidermonkey, 解析SpiderMonkey格式的文件,如JSON。
  • –self, 把UglifyJS2作爲依賴庫一塊兒打包。
  • –wrap, 把全部代碼合併到一個函數中。
  • –export-all, 和–wrap一塊兒使用,自動輸出到全局環境。
  • –lint, 顯示環境的異常信息。
  • -v, –verbose, 打印運行日誌詳細。
  • -V, –version, 打印版本號。
  • –noerr, 忽略錯誤命令行參數。

 

UglifyJS2的API使用

另外一種使用方式是,把UglifyJS2包放到程序中,經過API對JS文件或JS代碼進行壓縮。首先,新建一個NPM項目文件package.json,而後在是下載UglifyJS2依賴包。async

新建文件package.jsonide

~ vi D:\workspace\javascript\nodejs-uglifyJS2\package.json   {   "name": "nodejs-uglifyjs2",   "version": "0.0.1",   "description": "uglifyjs2",   "author": "Conan Zhang ",   "dependencies": {   } }

下載UglifyJS2依賴包函數

D:\workspace\javascript\nodejs-uglifyJS2>npm install uglify-js --save npm WARN package.json nodejs-uglifyjs2@0.0.1 No readme data! npm http GET https://registry.npmjs.org/uglify-js npm http 304 https://registry.npmjs.org/uglify-js npm http GET https://registry.npmjs.org/async npm http GET https://registry.npmjs.org/source-map npm http GET https://registry.npmjs.org/optimist npm http GET https://registry.npmjs.org/uglify-to-browserify npm http 304 https://registry.npmjs.org/uglify-to-browserify npm http 304 https://registry.npmjs.org/optimist npm http 304 https://registry.npmjs.org/async npm http 304 https://registry.npmjs.org/source-map npm http GET https://registry.npmjs.org/wordwrap npm http GET https://registry.npmjs.org/amdefine npm http 304 https://registry.npmjs.org/wordwrap npm http 304 https://registry.npmjs.org/amdefine uglify-js@2.4.14 node_modules\uglify-js ├── uglify-to-browserify@1.0.2 ├── async@0.2.10 ├── optimist@0.3.7 (wordwrap@0.0.2) └── source-map@0.1.34 (amdefine@0.1.0)
 
相關文章
相關標籤/搜索