Closure Compiler Service API リファレンス

Closure コンパイラ サービスのサポートが終了し、今後削除されます。 代わりにコンパイラをローカルで実行することを検討してください。

概要

Closure Compiler サービスからコンパイル済みコードやその他の情報をリクエストするには、HTTP POST リクエストを URL https://closure-compiler.appspot.com/compile に送信する必要があります。リクエストの本文には、必要なリクエスト パラメータにリストされているパラメータを含める必要があります。また、オプションのリクエスト パラメータにリストされているオプション パラメータを含めることもできます。

このページに説明がある場合は、フラグとオプションで、コマンドライン オプションの正規ドキュメントに従います。ウェブサービスで使用できないコマンドライン オプションに関する説明はありません。リクエスト パラメータの中には、コマンドラインで使用できないものや、別の名前を使用しているものもあります。

サーバーがリクエストを処理できない場合は、サーバーエラー メッセージが表示されます。これらのメッセージについては、エラー メッセージのセクションをご覧ください。

リクエスト パラメータ

必要なリクエスト パラメータ

js_code または code_url

コンパイルする JavaScript。これらのパラメータを少なくとも 1 つ含める必要があります。

js_code パラメータは、alert('hello') などの JavaScript を含む文字列にする必要があります。

code_url パラメータには、JavaScript ファイルの URL を含める必要があります。複数の 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 セクションは、値が statisticsoutput_info パラメータが含まれている場合にのみ表示されます。

値を 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 を指定し、コードに構文エラーやコンパイルを妨げるその他の問題が含まれている場合、Closure Compiler Service には 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 タグの 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_infocompiled_code が含まれている場合、テキストには JavaScript が含まれています。output_infowarnings が含まれている場合、テキストに警告メッセージが含まれます。output_infostatistics が含まれている場合、テキストには統計情報が含まれます。

output_format パラメータのデフォルト値は text です。

output_info

コンパイラからの出力の種類を指定します。出力には次の 4 種類があります。

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 を使用して、コンパイルするコードの外部で定義されているシンボルを保持します。js_externs パラメータは、ADVANCED_OPTIMIZATIONScompilation_level を使用している場合にのみ適用されます。詳細については、高度なコンパイルをご覧ください。

externs_url

このパラメータの値は、関数名やその他の記号を宣言する JavaScript を含むファイルの URL にする必要があります。このファイル内で宣言されているシンボルは、js_externs パラメータに直接リストされているシンボルとまったく同じように保持されています。externs_url パラメータは、ADVANCED_OPTIMIZATIONScompilation_level を使用している場合のみ効果があります。詳細については、高度なコンパイルをご覧ください。

複数の外部ファイルがある場合は、このパラメータを複数回指定できます。

exclude_default_externs

デフォルトでは、Closure Compiler サービスは document などのすべての外部定義シンボルと、そのすべてのメソッドを宣言する標準の externs ファイルを使用します。これらの一般的な外部イベントを使用しない場合は、リクエストに true の値を指定した exclude_default_externs パラメータを含めます。

extern の詳細については、高度なコンパイルとエクスターンをご覧ください。

output_file_name

存在する場合、Closure Compiler サービスはコンパイルされたコードを 1 時間キャッシュに保存し、特別な URL を介して利用可能にします。この時間帯に、ブラウザでこの URL を指定することで、コンパイル済みのコードをテストできます。URL の形式は次のとおりです。

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 ライブラリ コードを提供します。また、Closure Library のコード向けに設計された最適化も行います。Closure Library の詳細については、Closure Library のドキュメントをご覧ください。goog.require() 関数の詳細については、Closure ライブラリの使い方をご覧ください。

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 バイトを超えています。Compiler Service 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 バイトを超えています。
10URL からコンテンツを取得できません。Closure Compiler サービスが、code_url パラメータで指定された JavaScript ファイル、または externs_url パラメータで指定された外部ファイルを取得しようとしたときにエラーが発生しました。URL が正しいことと、ファイルの権限で表示できることを確認します。
12URL の形式が正しくありません。code_url パラメータまたは externs_url パラメータの値は、正しい形式の URL ではありません。
13生成する出力情報がありませんが、コンパイルがリクエストされました。output_info パラメータが指定されていません。
14output_info の値が不明ですoutput_info パラメータの値が、compiled_codewarnings、または statistics 以外である。
16警告レベルは不明ですwarning_level パラメータの値が、QUIETDEFAULTVERBOSE 以外である。
17不明なフォーマット オプションです。formatting パラメータの値が pretty_print 以外である。
18HTTP リクエストに不明なパラメータがあるHTTP リクエストに、こちらのドキュメントに記載されている以外のパラメータが含まれています。
19output_file_name の値が無効です 出力ファイルの名前に、文字、数字、ドット、アンダースコア、ダッシュが含まれているか、連続した 2 つのドット(..)が含まれている。
22最近実行したコンパイルが多すぎます。しばらくしてからもう一度お試しください。 マシンから送信したコンパイルが多すぎます。1 時間後、もう一度コンパイルを実行できます。
23コンパイラ例外(バックトレースあり) コンパイラがクラッシュしました。エラーのテキストには、Google が問題をデバッグする際に役立つ情報が含まれます。
24サポートされていない入力リソースタイプ リソースタイプが http: ではないため、入力ファイルは取得されません。