javascript編譯
js是JavaScript 源碼文件, .min.js是壓縮版的js文件。
.min.js文件經過壓縮,相對編譯前的js文件體積較小,傳輸效率快。經過編碼將變量和函數原命名改為毫無意義的命名,以防止他人窺視和竊取 js 源代碼
在線版
github
安裝
npm install uglify-js -g
編譯源碼
uglifyjs Three.es.js -c --toplevel -o Three.es.min.js
選項
-h, --help 列出使用指南。`--help options` 獲取可用選項的詳情。-V, --version 打印版本號。-p, --parse <options> 指定解析器配置選項:`acorn` 使用 Acorn 來解析。`bare_returns` 允許在函數外return。在壓縮CommonJS模塊或`.user.js `引擎調用被同步執行函數包裹的用戶腳本 時會用到。`expression` 不是解析文件,二是解析一段表達式 (例如解析JSON).`spidermonkey` 輸入文件是 SpiderMonkeyAST 格式 (JSON).-c, --compress [options] 啟用壓縮(true/false)/指定壓縮配置:`pure_funcs` 傳一個函數名的列表,當這些函數返回值沒被利用時,該函數會被安全移除。-m, --mangle [options] 啟用混淆(true/false)/指定混淆配置:`reserved` 不被混淆的名字列表。--mangle-props [options] 混淆屬性/指定壓縮配置:`builtins` 混淆那些與標準JS全局變量重復的名字。`debug` 添加debug前綴和后綴。`domprops` 混淆那些魚DOM屬性名重復的名字。`keep_quoted` 只混淆沒括起來的屬性名。`regex` 只混淆匹配(該正則)的名字。`reserved` 不需要混淆的名字的列表(即保留)。-b, --beautify [options] 是否美化輸出(true/false)/指定輸出配置:`beautify` 默認是啟用.`preamble` 預設的輸出文件頭部。你可以插入一段注釋,比如版權信息。它不會被解析,但sourcemap會因此調整。`quote_style` 括號類型:0 - auto自動1 - single單引號2 - double雙引號3 - original跟隨原碼`wrap_iife` 把立即執行函數括起來。注意:你或許應禁用壓縮配置中的`negate_iife`選項。 -o, --output <file> 輸出文件路徑 (默認 STDOUT). 指定 `ast` 或`spidermonkey`的話分別是輸出UglifyJS或SpiderMonkey AST。--comments [filter] 保留版權注釋。默認像Google Closure那樣,保留包含"@license"或"@preserve"這樣JSDoc風格的注釋。你可以傳以下的參數:- "all" 保留全部注釋- 一個合適的正則,如 `/foo/` 或 `/^!/`,保留匹配到的注釋。 注意,在啟用壓縮時,因為死代碼被移除或壓縮聲明為一行,并非*所有*的注釋都會被保留。--config-file <file> 從此JSON文件讀取 `minify()` 配置。-d, --define <expr>[=value] 定義全局變量。--ie8 支持IE8。等同于在`minify()`的`compress`、 `mangle` 和 `output`配置設置`ie8: true`。UglifyJS不會默認兼容IE8。--keep-fnames 不要混淆、干掉的函數的名字。當代碼依賴Function.prototype.name時有用。--name-cache <file> 用來保存混淆map的文件。--self 把UglifyJS本身也構建成一個依賴包(等同于`--wrap UglifyJS`)--source-map [options] 啟用 source map(true/false)/指定sourcemap配置:`base` 根路徑,用于計算輸入文件的相對路徑。`content` 輸入sourcemap。假如的你要編譯的JS是另外的源碼編譯出來的。假如該sourcemap包含在js內,請指定"inline"。 `filename` 輸出文件的名字或位置。`includeSources` 如果你要在sourcemap中加上源文件的內容作sourcesContent屬性,就傳這個參數吧。`root` 此路徑中的源碼編譯后會產生sourcemap.`url` 如果指定此值,會添加sourcemap相對路徑在`//#sourceMappingURL`中。--timings 在STDERR顯示操作運行時間。--toplevel 壓縮/混淆在最高作用域中聲明的變量名。--verbose 打印診斷信息。--warn 打印警告信息。--wrap <name> 把所有代碼包裹在一個大函數中。讓“exports”和“global”變量有效。你需要傳一個參數來指定此模塊的名字,以便瀏覽器引用。
參考文檔
UglifyJS3中文文檔