Closure Compiler Service API 參考資料

Closure 編譯器服務已遭淘汰,日後將予以移除。請考慮在本機執行編譯器。

總覽

如果要從 Closure Compiler 服務要求經過編譯的程式碼或其他資訊,您必須將 HTTP POST 要求傳送至 https://closure-compiler.appspot.com/compile 網址。要求主體必須包含必要要求參數中所列的參數,也可包含選用要求參數中列出的任何選用參數。

本頁將盡可能遵守標記和選項中指令列選項的標準說明文件。此處並未說明網路服務中未提供的指令列選項。部分要求參數也不會顯示在指令列中,或是名稱不同。

如果伺服器無法處理你的要求,你會收到伺服器錯誤訊息。如需這些訊息的說明,請參閱錯誤訊息一節。

要求參數

必要要求參數

js_codecode_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_codeoutput_info 參數時,才會顯示這個部分。同樣地,只有當您加入值為 statisticsoutput_info 參數時,才會顯示 statistics 區段。

如果您包含值為 warningsoutput_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>
      

如果內含值為 errorsoutput_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>
      

errorwarning 標記的 filelinecol 屬性會指出 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_OPTIMIZATIONScompilation_level 時,js_externs 參數才會生效。詳情請參閱進階編譯

externs_url

此參數的值必須是包含宣告 JavaScript 函式名稱或其他符號的 JavaScript 檔案網址。這個檔案中宣告的符號與 js_externs 參數中直接列出的符號完全相同。只有在使用 ADVANCED_OPTIMIZATIONScompilation_level 時,externs_url 參數才會生效。詳情請參閱進階編譯

如果有多個外部檔案,可以多次指定這個參數。

exclude_default_externs

根據預設,Closure Compiler 服務使用標準的 externs 檔案,可宣告常見的外部定義符號,例如 document 及其所有方法。如果您「不想」使用這些常見的外部,請在要求中加入值為 trueexclude_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 參數的值不是 xmljsontext 以外的值。
4壓縮層級不明。compilation_level 參數的值不是 WHITESPACE_ONLYSIMPLE_OPTIMIZATIONSADVANCED_OPTIMIZATIONS 以外的值。
8POST 資料過大。 傳送至 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_codewarningsstatistics 以外的值。
16警告層級不明warning_level 參數的值不是 QUIETDEFAULTVERBOSE 以外的值。
17不明的格式設定選項。formatting 參數的值不是 pretty_print
18HTTP 要求中的不明參數HTTP 要求包含本文件所列參數以外的參數。
19輸出_file_name 的值無效 輸出檔案名稱含有一個數字、字母、點號、底線或破折號,或包含兩個連續點 (..)
22最近執行的編譯數量過多。請稍後再試。 您從機器提交的編譯器數量過多。一小時後,您應該可以再次執行編譯。
23編譯器例外狀況 (含回溯) 編譯器當機。錯誤文字會包含相關資訊,協助 Google 偵錯。
24不支援的輸入資源類型 資源類型不是 http:,因此將不會擷取輸入檔案。