js文件壓縮


安裝

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/8UglifyJS默認不兼容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`)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM