YUI Compressor


YUI Compressorとは、Julien Lecomte(Yahoo! Inc.)によって開発された JavaScriptとCSSファイルを Minify(縮小)するツールです。

変数名を短くしたり、動作に影響しないコメントや空白を除去して、ソースファイルのサイズを小さくすることができます。

拙作 GUIフロントエンド
YUI Compressor GUI

インストール

YUI Compressor のダウンロード

YUI Compressor から最新のバージョンをダウンロードします。

*YUI Compressorの実行には、Java 1.4 以上が必要です。インストールされていない場合は、SunのWebサイトからダウンロードし、インストールしてください。

配置

ダウンロードしたアーカイブを、適当な場所に展開/配置すれば完了です。
アーカイブの build ディレクトリにある、yuicompressor-x.x.x.jar ファイルが、本体のJava アプリケーションです。

簡単な使い方

次のようにして、YUI Compressor を実行します。

例)test.js というファイルを縮小する場合

$java -jar yuicompressor.jar -o test-min.js test.js

test.js と同じディレクトリに test-min.js というMinify(縮小)されたファイルが出力されます。

詳細 (Ver 2.4.2)

書式

java -jar yuicompressor.jar [options] [input file]

標準オプション
    -h, --help 
    --type <js|css>
    --charset <charset>
    --line-break <column>
    -v, --verbose
    -o <output file>

JavaScript専用オプション
    --nomunge
    --preserve-semi
    --disable-optimizations

inputfile(入力ファイル)を指定しない場合、標準入力からソースを読み込みます。その場合、--type オプションは必須です。

オプション

標準オプション

オプション解説
-h, --help コマンドとオプションの概要を表示します。
--type <js|css> JavaScript か CSS のどちらのファイルとして縮小するかを指定します。 js もしくは css のどちらかを指定します。
(このオプションを指定しない場合は、入力ファイルの拡張子(.js もしくは .css)で判断します。拡張子が .js もしくは .css ではない場合などに使用します。)

また、入力が標準出力の場合(入力ファイルを指定せずに実行した場合)、このオプションは必須です。

例)ファイル test.abc を、JavaScript として縮小する
>java -jar yuicompressor.jar --type js test.abc
--charset <charset> 文字コードを指定します。
(このオプションを指定しない場合は、プラットフォームのデフォルト文字コードを使用して縮小します。)

例)ファイル test.css を、UTF-8 として縮小する
>java -jar yuicompressor.jar --charset UTF-8 test.css
--line-break <column> 改行を挿入して、出力ファイルの可読性を高めます。
指定した文字数を超え、改行可能な場所に改行を挿入します。

例)100文字以上で改行可能な場所に改行を挿入する
>java -jar yuicompressor.jar --line-break 100 test.js
-v, --verbose 詳細メッセージと警告を表示します。

例)詳細メッセージオプションを付けて実行する
>java -jar yuicompressor.jar -v test.js

結果例)with 文の使用
[WARNING] Using 'with' is not recommended. Moreover, using 'with' reduces the level of compression!
=0;}var n=5; ---> with <--- (document){aaa="bbb";}
		

結果例)使用されない変数
[WARNING] The symbol i is declared but is apparently never used.
This code can probably be written in a more compact way.
function aaa(){var  ---> i <--- =0;}var n=5;with
		
-o <output file> 出力ファイル名を指定します。
(このオプションを指定しない場合は、標準出力に出力されます。)

例)ファイル test.css を縮小し、small.css というファイル名で出力する
>java -jar yuicompressor.jar -o small.css test.css

JavaScript専用オプション

オプション解説
--nomunge 縮小化のみ行います。ローカル変数を難読化しません。
(このオプションを指定しない場合は、ローカル変数を "A" , "B" のように変更し、難読化・縮小します。)
--preserve-semi 不要なセミコロンを削除しないようにします。
(このオプションを指定しない場合は、"}" の前にあるセミコロンなど、動作に影響しないセミコロンを削除します。)
--disable-optimizations 標準で実装されている最適化を無効にします。
標準の最適化としては以下のようなものがあります。
プロパティアクセスの最適化
obj["foo"]のような記述をobj.fooにします。(可能なときのみ)
これにより3バイト縮小されます。
プロパティ定義の最適化
{'foo':bar}のような記述を{foo:bar}にします。(可能なときのみ)
これにより2バイト縮小されます。
文字列リテラルのマージ
"foo"+"bar"のような記述を"foobar"にします。(可能なときのみ)
これにより3バイト縮小されます。

コメント

/*! で始まるC言語スタイルのコメントは、除去されません。

ソース例
/*!
 * stacktrace.jp
 * Copyright 2007-2010 by Masakazu Ikead. All rights Reserved.
 */
出力例
/*
 * stacktrace.jp
 * Copyright 2007-2010 by Masakazu Ikead. All rights Reserved.
 */