2013-03-12 22 views
1

我們希望在客戶端JavaScript中發生異常時行號碼非常有用。理想的解決方案是理解ASI(自動分號插入)規則,即可識別語法而不是RegExp /基於文本。輸出換行符代替分號的JavaScript縮小器 - 基於Windows的

我發現的最接近的是UglifyJS2,其分號選項設置爲false。 [編輯] UglifyJS2還需要將最大行長度選項設置爲較低值,也許序列選項未被選中,否則它仍會生成長行。 1000個字符長]。 PS:我們必須使用Windows進行構建過程(因各種原因被鎖定),而且我們的構建腳本已經依賴於Python和Java(JS的closure編譯器,CSS的yuicompressor,cssembed用於將圖像嵌入到CSS中)以及我真的不想添加另一個構建過程依賴項(Node,Ruby或Web服務等),我強烈反對使用RegExp解決方案,因爲我認爲文本處理對於可靠的生產解決方案來說太脆弱了。 PPS:我不想依賴源地圖,因爲它們顯着更復雜(跨瀏覽器問題,內部和客戶端支持問題,難以管理和查找正確的源地圖)。

PPPS:對行號進行新要求的原因是我們開始使用https://github.com/getsentry/raven-js,如果行號對於例外有用,它將非常有用。我們的客戶端代碼是單頁Ajax/json應用程序。理論上使用換行而不是分號會使gzip的大小變化很小。

+0

不是你的問題的答案,但我認爲是分號更安全。有一些縮小器可以處理最大限度的線條。我曾經看過它,不記得是什麼,我猜是谷歌機箱編譯器還是雅虎的YUI壓縮器。 – Codebeat 2013-03-12 05:49:44

回答

0

UglifyJS2是我發現的唯一解決方案,它的工作確定以下設置:

  • 分號選項設置爲設置爲一個相當低的值false
  • 行的最大長度的選擇
  • 序列選項取消選中

行長選擇涉及到一個折中方法:低行長度更適合診斷髮生異常的位置,但gzip大小會增加一個小的amou因爲你減少了線的長度。