Closure コンパイラ サービスのサポートが終了し、今後削除されます。 代わりにコンパイラをローカルで実行することを検討してください。
概要
Closure Compiler サービス API を使用すると、ウェブベースの API で Closure Compiler JavaScript コンパイルにアクセスできます。Closure Compiler UI はウェブページ上のシンプルなフォームからコンパイラ サービスを利用するための簡単な方法を提供しますが、このウェブページからの出力をコピーするのは最も効率的な方法ではありません。Closure Compiler サービス API を使用すると、多様なツールを独自に構築して独自のワークフローを作成できます。
このチュートリアルでは、JavaScript を Closure Compiler サービスに送信し、Closure Compiler の出力を取得するプロセスについて説明します。この例では、最も基本的なレベルの Closure Compiler コンパイルを使用しています。これにより、JavaScript からコメントと空白が取り除かれます。
このチュートリアルは、JavaScript と HTTP に関する基本的な知識があることを前提としています。Python スクリプトを使用して Closure Compiler サービスに JavaScript を送信しますが、この例に沿って Python を知る必要はありません。
API と通信する方法
- リクエスト パラメータを決定する
Closure Compiler サーバーとやり取りするには、Closure Compiler サーバーに対して HTTP POST リクエストを送信します。リクエストでは、少なくとも次のパラメータを送信する必要があります。
js_code
またはcode_url
-
このパラメータの値は、コンパイルする JavaScript を示します。これらのパラメータを少なくとも 1 つ含める必要があります。
js_code
パラメータは、JavaScript を含む文字列(alert('hello')
など)にする必要があります。code_url
パラメータには、HTTP 経由で使用できる JavaScript.js
ファイルの URL を指定する必要があります。また、
js_code:path/to/filename.js
の形式で名前付きソース パラメータを含めることもできます。各ファイルは仮想ファイル システムで作成され、ECMASCRIPT6
でサポートされているimport
ステートメントとexport
ステートメントを介して標準化されたモジュールが有効になります。 compilation_level
-
このパラメータの値は、JavaScript に適用する圧縮の程度と最適化の度合いを示します。コンパイル レベルには
WHITESPACE_ONLY
、SIMPLE_OPTIMIZATIONS
、ADVANCED_OPTIMIZATIONS
の 3 つがあります。この例では、WHITESPACE_ONLY
コンパイルを使用します。これにより、コメントと空白文字が削除されます。compilation_level
パラメータのデフォルト値はSIMPLE_OPTIMIZATIONS
です。 output_info
-
このパラメータの値は、コンパイラが取得する情報の種類を示します。出力には、
compiled_code
、warnings
、errors
、statistics
の 4 種類があります。この例では、値compiled_code
を使用して、受け取った JavaScript の圧縮バージョンをリクエストで出力するよう Closure Compiler サービスに指示しています。 output_format
-
Closure Compiler サービスの出力の形式。出力形式は、
text
、json
、xml
の 3 つです。この例では、値text
を使用して生のテキストを出力します。output_format
パラメータのデフォルト値はtext
です。
これらの必須パラメータと追加のオプション パラメータの詳細については、API リファレンスをご覧ください。
この導入例の例では、1 行の生の JavaScript を Closure Compiler サービスに送信するだけなので、
code_url
ではなくjs_code
を使用しています。WHITESPACE_ONLY
のcompilation_level
を使用し、text
のoutput_format
を含む未加工テキスト出力を要求し、output_info
タイプのcompiled_code
を要求します。 -
Closure Compiler Service にポストリクエストを行う
Closure Compiler サービスから出力を取得するには、ステップ 1 で選択したパラメータを POST リクエストで Closure Compiler Service API の URL に送信します。これを行う 1 つの方法としては、Closure Compiler Service API の Hello World のような単純な HTML 形式を使用します。
しかし、開発中にこのようなフォームを使用するには、ブラウザから出力をコピーして、.js ファイルに貼り付ける必要があります。代わりに、Closure Compiler サービスにリクエストを送信する小さなプログラムを作成する場合は、Closure Compiler の出力を直接ファイルに書き込むことができます。たとえば、次の Python スクリプトは Closure Compiler サービスにリクエストを送信し、レスポンスを書き出します。
#!/usr/bin/python2.4 import httplib, urllib, sys # Define the parameters for the POST request and encode them in # a URL-safe format. params = urllib.urlencode([ ('js_code', sys.argv[1]), ('compilation_level', 'WHITESPACE_ONLY'), ('output_format', 'text'), ('output_info', 'compiled_code'), ]) # Always use the following value for the Content-type header. headers = { "Content-type": "application/x-www-form-urlencoded" } conn = httplib.HTTPSConnection('closure-compiler.appspot.com') conn.request('POST', '/compile', params, headers) response = conn.getresponse() data = response.read() print data conn.close()
注: このサンプルを再現するには、Windows ユーザーが Python のインストールが必要になる場合があります。Windows で Python をインストールして使用する手順については、Python Windows に関するよくある質問をご覧ください。
このスクリプトは、コマンドライン引数として渡された JavaScript を最適化します。上記のコードを
compile.py
というファイルに貼り付け、ファイルの権限を変更して実行可能にし、次のコマンドを実行します。$ python compile.py 'alert("hello");// This comment should be stripped'
このコマンドは、Closure Compiler のレスポンスから圧縮コードを出力します。
alert("hello");
この例では基本的なコンパイルを使用しているため、コンパイラはコメントを削除する以外の処理は行いません。
このスクリプトについては、以下の点にご注意ください。
-
パラメータは HTTPS 接続のリクエスト メソッドに URL エンコードされた文字列として渡されます。
urllib.urlencode
の呼び出しの後、params 変数にはjs_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
という文字列が含まれます。独自のスクリプトを記述する場合は、次のようにスクリプトを URL エンコードして投稿する必要があります。 - リクエストには、常に
application/x-www-form-urlencoded
のContent-type
ヘッダーが必要です。
-
パラメータは HTTPS 接続のリクエスト メソッドに URL エンコードされた文字列として渡されます。
次のステップ
より現実的な開発シナリオでサービスを使用してより適切な圧縮を実現する方法については、API によるファイルの圧縮をご覧ください。