読者です 読者をやめる 読者になる 読者になる

Closure Compilerのアノテーションが便利

JavaScript

Closure Compilerは言わずと知れたGoogle製のJavaScript最適化ツール。

昨日のYUI CompressorとかUglifyJSの話の続きで、この系統のツールを調査していたのだが、Closure Compilerはまた別の魅力があるように思える。

「ああ、これは役に立つな」と思ったのがアノテーション機能。

例えば、@defineアノテーションを使って、

/**
 * @define {boolean}
 */
var ENABLE_DEBUG = true;

if (ENABLE_DEBUG) {
    alert("debug!");
}

のようなコードを書いたとしても、

$ java -jar compiler.jar --js /path/to/myjs.js --define="ENABLE_DEBUG=false"
var ENABLE_DEBUG=false;

のようにClosure Compilerに--defineオプションを指定すると、圧縮したコードでは@defineで指定した変数の値を書き換えてくれる。

また、結果として到達不可能になったコードも自動的に削除してくれている。ちょっと試した感じでは、デットコードの検出の点においては、YUI CompressorやUglifyJSよりもClosure Compilerの方が賢いという印象をうけた。

あと、わざわざjarをダウンロードしなくても、

のようなWeb上のコンソールを使ったり、Web APIを利用すればClosure Compilerを利用できると知ったのも今日の収穫。(素人で申し訳ありません。)


YUI CompressorとかUglifyJSとかClosure Compilerとかはどれも本当に素晴らしいライブラリで、ずっとJavaScriptをメインでやってきたプログラマー・エンジニアには当たり前のことなのかもしれないけど、数年ぶりにこの世界に戻ってきた僕には、非常に新鮮に見える。