§Google Closure Compiler を使う
Closure Compiler は、JavaScript のダウンロード・実行を高速化するためのツールです。Closure Compiler は、その名の通りコンパイラです。ただし、ソースコードを機械語へコンパイルするのではなく、JavaScript を良い JavaScript へコンパイルします。JavaScript コードはパース・分析され、不要なコードは削除され、必要に応じて書き換えられて、最終的には minify されます。
app/assets
ディレクトリ以下の JavaScript は全て Google Closure Compiler によりパースされて、エラーや依存性のチェックがされます。さらに、ビルド設定で有効にされている場合は minify されます。
§JavaScript のサニティチェック
JavaScript コードは compile
コマンドの実行時や、コードの変更時に自動的にコンパイルされます。他のコードのコンパイルエラー同様、JavaScript のコンパイルエラーもブラウザ上で確認できます。
§縮小
.js
が .min.js
に置き換えられた縮小版のファイルも生成されます。今回の例の場合、縮小版は test.min.js
となっていることでしょう。通常のファイルの替わりに縮小版を使いたい場合は、HTML ファイルにて script の source 属性を変更する必要があります。
§エントリポイント
デフォルトでは、ファイル名の先頭にアンダースコアが付いていない JavaScript ファイルはすべてコンパイルされます。この振る舞い意は project/Build.scala
にて javascriptEntryPoints
キーを上書きすることで変更できます。このキーは PathFinder
を保持しています。
例えば、 app/assets/javascripts/main
ディレクトリの .js
ファイルだけをコンパイルするには以下のようにします:
val main = play.Project(appName, appVersion, appDependencies).settings(
javascriptEntryPoints <<= baseDirectory(base =>
base / "app" / "assets" / "javascripts" / "main" ** "*.js"
)
)
デフォルトの定義は以下のとおりです:
javascriptEntryPoints <<= (sourceDirectory in Compile)(base =>
((base / "assets" ** "*.js") --- (base / "assets" ** "_*")).get
)
§オプション
ClosureCompiler のコンパイル処理は、プロジェクトの Build.scala
ファイル (in the settings part of the PlayProject
) で制御することができます。
- advancedOptimizations コード変換とシンボルのリネームをより積極的に行うことで、更なる圧縮を達成します。一方で、より積極的なアプローチを取るということは、ADVANCED_OPTIMIZATIONS を使う際には出力されたコードが入力のコードと同じように動くことを確認するために十分な注意を払わなければならないということを意味します。
- checkCaja Caja コントロールの構成をチェックします。
- checkControlStructures 不正なコントロール構成をチェックします。
- checkTypes 不正な型をチェックします。
- checkSymbols 不正なシンボルをチェックします。
- ecmascript5 入力および出力言語を、より新しい ECMAScript バージョン 5 に設定します。古いブラウザでは動作しないかもしれません。
例:
closureCompilerOptions += "ecmascript5"
次ページ: 依存性の管理に require.js を使う