安裝
Shift+右鍵打開powershell窗口 執行:
npm install uglify-js -g
安裝完畢
執行
但是不能直接在powershel窗口執行fglifyjs命令
因為它不能執行外部文件
打開cmd執行 cd文件路徑 找到需要混淆的代碼
執行命令fglifyjs index.js -m -o index.min.js
配置
直接在powershel窗口中執行
在powershell中執行 get-executionpolicy
會返回 Restricted(默認設置)
執行set-executionpolicy remotesigned 執行策略更改
輸入Y 回車
這樣就可以直接在當前項目中右鍵打開powershel窗口執行
在vscode終端中也能直接執行
批處理
復制下面代碼保存為bat格式
@echo off ::改成自己需要處理的文件夾路徑 SET JSFOLDER=C:\Users\Administrator\Desktop\2 echo 正在查找JS文件 chdir /d %JSFOLDER% for /r . %%a in (*.js) do ( @echo 正在壓縮 %%~a ... ::另存為重命名.MIN文件 FOR /F "DELIMS=" %%I IN ("%%~DPNa")DO ( IF /I NOT "%%~XI"==".MIN" uglifyjs %%~fa -m -o %%~DPNa.min.js ) ) echo 完成! pause & exit
以下是可用的選項:
--source-map 指定輸出的文件產生一份sourcemap
--source-map-root 此路徑中的源碼編譯后會產生sourcemap
--source-map-url 放在//#sourceMappingURL的sourcemap路徑. 默認是
--source-map傳入的值.
--source-map-include-sources 如果你要在sourcemap中加上源文件的內容作為sourcesContent屬性,
就傳這個參數吧。
--source-map-inline 把sourcemap以base64格式附在輸出文件結尾
--in-source-map 輸入sourcemap。假如的你要編譯的JS是另外的源碼編譯出來的。
假如該sourcemap包含在js內,請指定"inline"。
--screw-ie8 是否要支持IE6/7/8。UglifyJS默認不兼容IE。
--support-ie8 是否要支持IE6/7/8,等同於在`compress`, `mangle` 和
`output`選項中都設置`screw_ie8: false`
--expr 編譯一個表達式,而不是編譯一段代碼(編譯JSON時用)
-p, --prefix 忽略sourcemap中源碼的前綴。例如`-p 3`會干掉文件名前面3層目錄
以及保證路徑是相對路徑。你也可以指定`-p relative`,讓UglifyJS
自己計算輸出文件、sourcemap與源碼之間的相對路徑。
-o, --output 輸出文件,默認標准輸出(STDOUT)
-b, --beautify 美化輸出/指定輸出 選項
-m, --mangle Mangle的名字,或傳入一個mangler選項.
-r, --reserved mangle的例外,不包含在mangling的名字
-c, --compress 是否啟用壓縮功能(true/fasle),或者傳一個壓縮選項對象, 例如
`-c 'if_return=false,pure_funcs=["Math.pow","console.log"]'`,
`-c`不帶參數的話就是用默認的壓縮設置。
-d, --define 全局定義
-e, --enclose 所有代碼嵌入到一個大方法中,傳入參數為配置項
--comments 保留版權注釋。默認保留Google Closure那樣的,保留JSDoc-style、
包含"@license" 或"@preserve"字樣的注釋。你也可以傳下面的參數:
- "all" 保留所有注釋
- 正則(如`/foo/`、`/^!/`)保留匹配到的。要注意,如果啟用了壓
縮,因為會移除不可達代碼以及壓縮連續聲明,因此不是*所有*注釋都能
保留下來。
--preamble 在輸出文件開頭插入的前言。你可以插入一段注釋,例如版權信息。
這些不會被編譯,但sourcemap會改成當前的樣子。
--stats 在STDERR中顯示操作運行時間。
--acorn 用 Acorn解析。
--spidermonkey 假如輸入文件是 SpiderMonkey AST 格式(像JSON).
--self 把UglifyJS2本身也構建成一個依賴包
(等同於`--wrap=UglifyJS --export-all`)
--wrap 所有代碼嵌入到一個大函數中,讓"exports"和"global"變量有效,
你需要傳入一個參數指定模塊被瀏覽器引入時的名字。
--export-all 只當`--wrap`時有效,告訴UglifyJS自動把代碼暴露到全局。
--lint 顯示一些可視警告
-v, --verbose Verbose
-V, --version 打印版本號.
--noerr 不要為-c,-b 或 -m選項中出現未知選項而拋出錯誤。
--bare-returns 允許返回函數的外部。當最小化CommonJs模塊和Userscripts時,
可能匿名函數會被.user.js引擎調用立即執行(IIFE)
--keep-fnames 不要混淆、干掉的函數的名字。當代碼依賴Function.prototype.name時有用。
--reserved-file 要保留的文件的名字
--reserve-domprops 保留(絕大部分?)DOM的屬性,當--mangle-props
--mangle-props 混淆屬性,默認是`0`.設置為`true`或`1`則會混淆所有屬性名。
設為`unquoted`或 `2`則只混淆不在引號內的屬性。`2`時也會讓
`keep_quoted_props` 美化選項生效,保留括號內的屬性;讓壓縮選項
的`properties`失效,阻止覆寫帶點號(.)的屬性。你可以通過在命令
中明確設置來覆寫它們。
--mangle-regex 混淆正則,只混淆匹配到的屬性名。
--name-cache 用來保存混淆map的文件
--pure-funcs 假如返回值沒被調用則可以安全移除的函數。
例如`--pure-funcs Math.floor console.info`(需要設置 `--compress`)