Closure 編譯器服務已遭淘汰,日後將予以移除。請考慮在本機執行編譯器。
總覽
如果要從 Closure Compiler 服務要求經過編譯的程式碼或其他資訊,您必須將 HTTP POST 要求傳送至 https://closure-compiler.appspot.com/compile
網址。要求主體必須包含必要要求參數中所列的參數,也可包含選用要求參數中列出的任何選用參數。
本頁將盡可能遵守標記和選項中指令列選項的標準說明文件。此處並未說明網路服務中未提供的指令列選項。部分要求參數也不會顯示在指令列中,或是名稱不同。
如果伺服器無法處理你的要求,你會收到伺服器錯誤訊息。如需這些訊息的說明,請參閱錯誤訊息一節。
要求參數
必要要求參數
js_code
或code_url
-
要編譯的 JavaScript。您至少必須加入其中一項參數,且可以同時加入兩者。
js_code
參數必須是包含 JavaScript 的字串,例如alert('hello')
。code_url
參數必須包含 JavaScript 檔案的網址。您可以加入多個code_url
參數來指定多個輸入檔案。 compilation_level
-
請前往標記和選項查看
compilation_level
的說明文件。 output_format
- Closure Compiler 服務的輸出格式。輸出格式有三種:
xml
-
xml
輸出格式會將要求的資訊納入有效的 XML 中。XML 輸出結果如下:
<compilationResult> <compiledCode>var a="hello";alert(a);</compiledCode> <statistics> <originalSize>98</originalSize> <compressedSize>35</compressedSize> <compileTime>0</compileTime> </statistics> </compilationResult>
compiledCode
區段包含 Closure Compiler 服務產生的壓縮 JavaScript。只有在要求中包含值為compiled_code
的output_info
參數時,才會顯示這個部分。同樣地,只有當您加入值為statistics
的output_info
參數時,才會顯示statistics
區段。如果您包含值為
warnings
的output_info
參數,且編譯器會產生警告,則輸出會包含warnings
標記:<compilationResult> ... <warnings> <warning type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3" line="delete 1;">warning 1</warning> <warning type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="delete 1;">warning 2 </warning> </warnings> ... </compilationResult>
如果內含值為
errors
的output_info
,則程式碼如果包含語法錯誤或其他會禁止編譯的問題,就會加入errors
標記。errors
標記如下所示:<compilationResult> ... <errors> <error type="JSC_NO_SIDE_EFFECT" file="default.js" lineno="12" charno="3" line="var x=-'hello';">error 1 </error> <error type="JSC_UNUSED_VAR" file="default.js" lineno="13" charno="13" line="var x=-'hello'">error 2 </error> </errors> ... </compilationResult>
error
和warning
標記的file
、line
和col
屬性會指出 Closure Compiler 服務發生錯誤的位置。如果 Closure Compiler 服務遇到無法處理輸入內容的錯誤,輸出結果看起來會像這樣:
<compilationResult> <serverErrors> <error code="1">Over quota</error> </serverErrors> </compilationResult>
json
-
json
輸出格式會將要求的資訊納入 JavaScript Object Notation (JSON) 字串中。評估此字串為 JavaScript 時會傳回 JavaScript 物件。JSON 輸出看起來會像這樣:
{ "compiledCode":/* raw code here */, {"errors": [ {"charno":4321, "error":"ERROR: You failed.", "lineno":1234, "file":"default.js", "type":"ERROR_TYPE", "line":"var x=-'hello';"}], "warnings": [ {"charno":4321, "lineno":1234, "file":"default.js", "type":"ERROR_TYPE", "warning":"Warning: You did something wrong!", "line":"delete 1;"}] "serverErrors":[ {"code":123,"error":"Over quota"} ], "statistics":{ "originalSize":10, "compressedSize":3000 "compileTime":10 } }
JSON 格式與 XML 格式類似:XML 輸出中的每個標記都會對應至 JSON 物件中名稱相同的屬性
text
-
text
輸出格式會傳回不含標記或 JSON 括號的原始文字。如果output_info
包含compiled_code
,則文字會包含 JavaScript。如果output_info
包含warnings
,則文字會包含警告訊息。如果output_info
包含statistics
,則文字會包含統計資料。
output_format
參數的預設值為text
。 output_info
-
指出您希望編譯器產生的輸出類型。可能的輸出類型有四種:
compiled_code
- 輸入和最佳化的輸入 JavaScript 版本。
warnings
- 表示 JavaScript 中可能發生錯誤的訊息。
errors
- 表示 JavaScript 中語法錯誤或其他錯誤的訊息。
statistics
-
Closure Compiler 的壓縮程度相關資訊。針對 XML 輸出,Closure Compiler 服務會以下列格式傳回統計資料:
<compilationResult> ... <statistics> <firstStatisticName>24</firstStatisticName> <secondStatisticName>15</secondStatisticName> </statistics> </compilationResult>
選用的請求參數
js_externs
-
這個參數的值必須為宣告函式名稱或其他符號的 JavaScript 程式碼。使用
js_externs
保留在編譯程式碼之外定義的符號。只有在使用ADVANCED_OPTIMIZATIONS
的compilation_level
時,js_externs
參數才會生效。詳情請參閱進階編譯。 externs_url
-
此參數的值必須是包含宣告 JavaScript 函式名稱或其他符號的 JavaScript 檔案網址。這個檔案中宣告的符號與
js_externs
參數中直接列出的符號完全相同。只有在使用ADVANCED_OPTIMIZATIONS
的compilation_level
時,externs_url
參數才會生效。詳情請參閱進階編譯。如果有多個外部檔案,可以多次指定這個參數。
exclude_default_externs
-
根據預設,Closure Compiler 服務使用標準的 externs 檔案,可宣告常見的外部定義符號,例如
document
及其所有方法。如果您「不想」使用這些常見的外部,請在要求中加入值為true
的exclude_default_externs
參數。如要進一步瞭解外部,請參閱進階編譯與外部。
output_file_name
-
如果存在,Closure Compiler 服務會將經過編譯的程式碼快取一小時,並透過特殊網址提供。在這個小時內,您可以將瀏覽器指向這個網址,以測試編譯的程式碼。網址的格式如下:
https://closure-compiler.appspot.com/code/bf067f356d510e1c7b81347eb84f65d2/[value of output_file_name]
formatting
-
請參閱標記和選項中關於
formatting
的說明文件。您可以在同一個要求中提供多個formatting
參數。 -
use_closure_library
-
如果您將
use_closure_library
參數的值設為true
,編譯器會在原始碼中尋找goog.require()
陳述式,並提供任何這類陳述式要求的 Closure Library 程式碼。也會針對 Closure Library 程式碼執行最佳化作業。如要進一步瞭解 Closure Library,請參閱 Closure Library 說明文件。如要進一步瞭解goog.require()
函式,請參閱在封閉程式庫中尋找路線。use_closure_library
參數的預設值為false
。 warning_level
-
請前往標記和選項查看
warning_level
的說明文件。 -
language
-
請參閱標記和選項中對等
language_in
選項的說明文件。 -
language_out
-
請前往標記和選項查看
language_out
的說明文件。 -
rewrite_polyfills
-
請前往標記和選項查看
rewrite_polyfills
的說明文件。 -
use_types_for_optimization
-
請前往標記和選項查看
use_types_for_optimization
的說明文件。
錯誤訊息
如果伺服器無法處理你的要求,你就會收到下表所列的伺服器錯誤訊息。請注意,這些伺服器錯誤訊息與編譯器錯誤和警告不同。編譯器錯誤和警告表示 Closure Compiler 在您的 JavaScript 程式碼中發現問題。伺服器錯誤訊息表示編譯器因要求發生錯誤而完全無法處理您的程式碼。
錯誤代碼 | 錯誤訊息 | 意義 |
---|---|---|
2 | 不明的輸出模式。 | output_format 參數的值不是 xml 、json 或 text 以外的值。 |
4 | 壓縮層級不明。 | compilation_level 參數的值不是 WHITESPACE_ONLY 、SIMPLE_OPTIMIZATIONS 或 ADVANCED_OPTIMIZATIONS 以外的值。 |
8 | POST 資料過大。 |
傳送至 Closure Compiler 服務的資料大小超過 200,000 位元組。編譯器 UI 和您的 API 呼叫都使用 HTTP POST 要求來與服務通訊,而此要求中傳送的資料總大小不得超過 200,000 個位元組。如為 API 呼叫,這項限制適用於所有要求參數中的文字總數。針對 Closure Compiler UI,這項限制適用於原始碼和編譯器選項 (例如 @code_url ) 中的文字總數。如果要求過大,請將原始碼移至不同的檔案,然後使用 @code_url 參照這些檔案,或是在本機電腦上使用 Closure Compiler 應用程式。 |
9 | 檔案過大。 | 所有 code_url 檔案、所有 externs_url 檔案、所有 js_code 程式碼和所有 js_externs 程式碼的程式碼總數超過 1024,000 位元組。 |
10 | 無法從 URL 擷取內容。 | 假使 Closure Compiler 服務嘗試擷取 code_url 參數中指定的 JavaScript 檔案或 externs_url 參數中指定的外部檔案,就會發生錯誤。請確認網址正確無誤,且檔案的權限允許檢視。 |
12 | 網址格式不正確。 | code_url 參數或 externs_url 參數的值不是格式正確的網址。 |
13 | 沒有產生任何輸出資訊,但要求編譯。 | 未指定 output_info 參數。 |
14 | 輸出_info 值不明 | output_info 參數的值不是 compiled_code 、warnings 或 statistics 以外的值。 |
16 | 警告層級不明 | warning_level 參數的值不是 QUIET 、DEFAULT 或 VERBOSE 以外的值。 |
17 | 不明的格式設定選項。 | formatting 參數的值不是 pretty_print 。 |
18 | HTTP 要求中的不明參數 | HTTP 要求包含本文件所列參數以外的參數。 |
19 | 輸出_file_name 的值無效 | 輸出檔案名稱含有一個數字、字母、點號、底線或破折號,或包含兩個連續點 (.. ) |
22 | 最近執行的編譯數量過多。請稍後再試。 | 您從機器提交的編譯器數量過多。一小時後,您應該可以再次執行編譯。 |
23 | 編譯器例外狀況 (含回溯) | 編譯器當機。錯誤文字會包含相關資訊,協助 Google 偵錯。 |
24 | 不支援的輸入資源類型 | 資源類型不是 http:,因此將不會擷取輸入檔案。 |