Google Closure Compilerがこれを行います。さまざまな設定がありますが、「単純な最適化」設定でさえ、変数名と (関数がスクリプトの外部で呼び出されないことがわかっている場合) 関数名を短縮します。節約できる場合は、関数をインライン化することもできます。
たとえば、次のスクリプトがあるとします。
jQuery(function($) {
var allDivsOnThePage = $("div"),
someParagraphsAsWell = $("p");
setColor(allDivsOnThePage, "blue");
setColor(someParagraphsAsWell, "green");
function setColor(elms, color) {
return elms.css("color", color);
}
});
単純な最適化でクロージャ コンパイラを使用すると (jQuery を使用していることを伝えると)、次の結果が得られます。
jQuery(function(a){var b=a("div"),a=a("p");b.css("color","blue");a.css("color","green")});
識別子を短縮しただけでなく、可能な場合は再利用し (この場合は何も節約できませんでしたが、他の場合は節約できました)、setColor
関数をインライン化したため節約できました。