jQuery のコードは元々 55KB なのだが、17KB に圧縮された版も提供されていてよい感じである。svn からビルド環境を持ってくると、jQueryのソースコードだけでなく任意の jsファイルを圧縮できるので、重宝する(かもしれない)。
% svn co http://jqueryjs.googlecode.com/svn/tags/<version> # 2007/5/26現在、version=1.1.2 がよいだろう % cd <version> % java -jar build/js.jar build/build/pack.js <src-js-file> <dist-js-file> # js.jar はこれかな→Rhino - Java による JavaScript
<src-js-file> に圧縮したい jsファイル、<dist-js-file> に圧縮したファイルの保存先を入れる。jsファイルの先頭にコメント行がないとエラーになるので注意。
例、といいつつ、元のソースコードがこんなに短いとかえってサイズ増えるので意味ないケド。。
/* * sample.js */ var MyObj={ myData: 'I am MyObj'; showMe: function() { alert(this.myData); } };
を、変換すると、
/* * sample.js */ eval(function(p,a,c,k,e,r){e=String;if(!''.replace(/^/,String)){while(c--)r[c]=k[c]||c;k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('8 1={0:\'6 3 1\',2:5(){4(7.0)}};',9,9,'myData|MyObj|showMe|am|alert|function|I|this|var'.split('|'),0,{}))
となる。圧縮コードを展開する分、処理は増えるので、ファイルサイズの圧縮効果との兼ね合いは考えたほうがよいけれども、コードの難読化という副次的効果はあるよね。