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 フォルダ以下にファイルを作成するようにしています。
この部分は作成しているプロジェクト環境に合わせて変更します。
今回、参考にしたサイトは以下の通りです。