Google closure tools に含まれる closure compiler の使い方です。 closure library に含まれる closurebuilder.py を利用して、 複数の JavaScript ファイル を 1つの JavaScript ファイル へ バッチ処理で コンパイル します。 ここでは、バッチ処理する前提となる「フォルダ構成」と「コンパイルバッチ」を記載します。
(※Windows で、Javaランタイム、Python が インストール 済み の環境を前提とします。)
フォルダ構成
ROOT ├ lib │ ├ closure-compiler │ │ └compiler.jar
… コンパイラ本体 │ └ closure-library │ └ closure │ ├ bin │ │ ├ build │ │ │ └closurebuilder.py
… コンパイルで利用 │ │ ├ calcdeps.py │ │ └ scopify.py │ ├ css │ └ goog │ └ closure library の ソースコード ├ src │ └ソースコード
… 自分が作成したソースコードの保存場所 └build.bat
… ビルドを実行するバッチファイル
build.bat
@echo off rem 実行ディレクトリをバッチファイルの場所へ移動。 cd /d "%~dp0" rem 環境変数に Java と Python へのパスを追加。 set PATH=%PATH%;C:\Program Files\Java\jre7\bin set PATH=%PATH%;C:\Python27 rem 各種変数を設定。 set CLOSUREBUILDERPY=.\lib\closure-library\closure\bin\build\closurebuilder.py set CLOSURECOMPILERJAR=.\lib\closure-compiler\compiler.jar set CLOSURE_LIBRARY_DIR=.\lib\closure-library\closure\goog set CLOSERU_LIBRARY_THIRD_DIR=.\lib\closure-library\third_party\closure\goog set SOURCE_CODE_DIR=.\src set MAIN_CLASS_NAME=garafu.test set OUTPUT_FILE=.\build\garafu.test.min.js rem コンパイルの実行。 %CLOSUREBUILDERPY% ^ --root=%CLOSURE_LIBRARY_DIR% ^ --root=%CLOSERU_LIBRARY_THIRD_DIR% ^ --root=%SOURCE_CODE_DIR% ^ --namespace=%MAIN_CLASS_NAME% ^ --output_mode=compiled ^ --compiler_jar=%CLOSURECOMPILERJAR% ^ --compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" ^ --compiler_flags="--js_output_file=%OUTPUT_FILE%"
「各種編集の設定」(12 - 19 行)では build.bat
からの相対パスを指定します。
フォルダ構成が上記と異なる場合、この部分を変更することになります。
%CLOSERU_LIBRARY_THIRD_DIR%
設定を行わないと場合により、次のようなエラーが発生します。
closure compiler は不要なファイル、コードを削ってくれるので、余分に見えても追加しておきます。
(不要なファイル、コードを削るのは ADVANCED_OPTIMIZATIONS に限りますが。。)
depstree.NamespaceNotFoundError: Namespace "goog.async.Deferred" never provided. Required in Source [JavaScript ファイル への パス]
%MAIN_CLASS_NAME%
最初に実行するクラス名を指定します。
基本的に、ここで指定するクラスは singleton で、
goog.addSingletonGetter([クラス名]); および
[クラス名].getInstance();
の実装があるクラスを指定します。
この部分は作成しているプロジェクト環境に合わせて変更します。
%OUTPUT_FILE%
出力先のフォルダ、ファイル名を指定します。
ここでは、 build フォルダ以下にファイルを作成するようにしています。
この部分は作成しているプロジェクト環境に合わせて変更します。
今回、参考にしたサイトは以下の通りです。
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!