【環境準備】
<code>//uglify-js 隻支援 ES5</code>
<code>npm install uglify-js -g</code>
<code>//uglify-es 支援 ES6+</code>
<code>npm install uglify-es -g</code>
<code>//uglify-js/uglify-es 在 CLI 調用時都是 uglifyjs</code>
<code>//在 API 調用時有所不同</code>
<code>var</code> <code>UglifyJS = require(</code><code>"uglify-js"</code><code>);</code>
<code>var</code> <code>UglifyJS = require(</code><code>"uglify-es"</code><code>);</code>
【Python 代碼】
<code>#encoding: utf-8</code>
<code>#author: walker</code>
<code>#date: 2017-11-01</code>
<code>#summary: Python 調用 uglify-js/uglify-es 批量壓縮 js 檔案</code>
<code>import</code> <code>os</code>
<code># 處理一個</code>
<code>def</code> <code>ProcOne(parent, filename):</code>
<code> </code><code>if</code> <code>not</code> <code>filename.lower().endswith(</code><code>'.js'</code><code>): </code><code>#忽略非js檔案</code>
<code> </code><code>return</code>
<code> </code><code>if</code> <code>filename.lower().endswith(</code><code>'.min.js'</code><code>): </code><code>#忽略已壓縮的js檔案</code>
<code> </code><code>srcFile </code><code>=</code> <code>os.path.join(parent, filename)</code>
<code> </code><code>dstFile </code><code>=</code> <code>srcFile[:</code><code>-</code><code>3</code><code>] </code><code>+</code> <code>'.min.js'</code>
<code> </code><code>cmd </code><code>=</code> <code>'uglifyjs "%s" -o "%s"'</code> <code>%</code> <code>(srcFile, dstFile)</code>
<code> </code><code>print</code><code>(</code><code>'%s ...'</code> <code>%</code> <code>cmd)</code>
<code> </code><code>os.system(cmd)</code>
<code># 處理所有</code>
<code># recursive 為 True,周遊 root 目錄</code>
<code># recursive 為 False,隻處理 root 的一級目錄</code>
<code>def</code> <code>ProcAll(root, recursive</code><code>=</code><code>True</code><code>):</code>
<code> </code><code>if</code> <code>recursive:</code>
<code> </code><code>for</code> <code>parent, dirnames, filenames </code><code>in</code> <code>os.walk(root):</code>
<code> </code><code>for</code> <code>filename </code><code>in</code> <code>filenames:</code>
<code> </code><code>ProcOne(parent, filename) </code>
<code> </code><code>else</code><code>:</code>
<code> </code><code>for</code> <code>filename </code><code>in</code> <code>os.listdir(root):</code>
<code> </code><code>ProcOne(root, filename)</code>
<code> </code>
<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>
<code> </code><code>ProcAll(r</code><code>'D:\NodejsProject\test'</code><code>, recursive</code><code>=</code><code>False</code><code>)</code>
【測試版本說明】
<code>OS: Windows 10</code>
<code>Python: 3.6.3</code>
<code>NodeJS: 8.7.0</code>
<code>uglify-es: 3.1.6</code>
本文轉自walker snapshot部落格51CTO部落格,原文連結http://blog.51cto.com/walkerqt/1978134如需轉載請自行聯系原作者
RQSLT