SConsでJavascriptを組み立てる

JavaScriptでも一定以上の規模のプログラムは、
機能ごとにファイルを分けたほうがいいと思います。
jQueryでもそうですし。


そんなわけで「分割したファイルをひとつにする方法」を簡単にメモしておきます。
Python が好きなので make じゃなくて SCons を使います。
Python の機能を使って色々できるところが make より嬉しいです。


事前準備

  1. Pythonをインストール
    • Windows以外は最初から入ってると思います、たぶん
  2. SCons を easy_install 使ってインストール
    • 自分の Mac では pip install でインストールしようとしたら失敗しました
  3. scons -v でちゃんとインストールされたか確認しておく
  4. Windowsの場合はgowを入れてパスを通しておくと捗ります

簡単なSConsの使い方

プロジェクトのフォルダに SConstruct という名前のファイルを作成して
どういう処理をするか書いていきます。

Command('target.js', ['source1.js', 'source2.js'], 'cat $SOURCES > $TARGET')

と書いて

cd path/to/project/folder
scons

ってやると source1.js と source2.js をくっつけた target.js が作られます。
二回目以降は source1.js か source2.js が変更された時だけ実行されます。
cat とかのコマンドがわからない人は調べてください。


応用

スクリプト全体を匿名関数で囲いたい場合

Command('target.js', ['source1.js', 'source'], [
    'echo "(function(){" > $TARGET',
    'cat $SOURCES >> $TARGET',
    'echo "})();" >> $TARGET'
    ])

echo で前後に書き加えているだけです。


Closure Compilerを使いたい場合

Command('target.js', 'source.js', 'java -jar compiler.jar --js $SOURCE --js_output_file $TARGET')

compiler.jarを事前に用意しておく必要があります。
複数のファイルをコンパイルするときはちょっと工夫する必要があります。


まとめ

ファイル分割すると見通しがよくなるし、なにかと便利です。
単体テストもやりやすくなります、たぶん。
はやりの CoffeeScript のコンパイルにも使えるはずです。