Mac OS 10.7.5 (Lion)
Homebrew 、 git はインストールされている前提です。
Scala と SBT のインストール
ScalaとSBTをbrewでインストールします。
$ brew scala
$ brew sbt
Scala.js のサンプルダウンロード
githubからサンプルプロジェクトをダウンロードします。
$ git clone git@github.com:sjrd/scala-js-example-app.git
packageJS 実行
サンプルプロジェクトに移動して、sbt packageJS を実行します。
$ cd scala-js-example-app/
$ sbt packageJS
index-dev.htmlをブラウザで表示します。 it works! と表示されれば成功です。
$ open index-dev.html
optimizeJS 実行
次に sbt optimizeJS で圧縮されたJSを出力します。
$ sbt optimizeJS
成功したら index.html をブラウザで表示します。 it works! と表示されれば成功です。
$ open index.html
OutOfMemoryError が発生した場合
自分は以下のようなエラーが発生しました。その場合は次の操作を試してみてください。
[info] Optimizing /git/scala-js-example-app/target/scala-2.10/example-opt.js ...
java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space
・・・
sbt のコマンドを調べます。javaコマンドの引数がわかります。
$ cat `which sbt`
#!/bin/sh
test -f ~/.sbtconfig && . ~/.sbtconfig
exec java -Xmx512M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.13.1/libexec/sbt-launch.jar "$@"
-Xmx512の値を変更したいのでsbtファイルを編集します。
sbtはシンボリックリンクなので元のsbtファイルに書き込み権限を加えて編集します。
シンボリックリンクが指す元ファイルを調べる
$ ls -al /usr/local/bin/ | grep sat
lrwxr-xr-x 1 user admin 28 2 12 12:36 sbt -> ../Cellar/sbt/0.13.1/bin/sbt
元ファイルに書き込み権限があるか調べる
$ ls -al /usr/local/Cellar/sbt/0.13.1/bin/sbt
-r-xr-xr-x 1 user admin 142 2 12 12:36 /usr/local/Cellar/sbt/0.13.1/bin/sbt
書き込み権限をつける
$ chmod 755 /usr/local/Cellar/sbt/0.13.1/bin/sbt
以下のように -Xmx1024M と修正する
$ sudo vi /usr/local/Cellar/sbt/0.13.1/bin/sbt
exec java -Xmx1024M ${SBT_OPTS} -jar /usr/local/Cellar/sbt/0.13.1/libexec/sbt-launch.jar "$@"
ついでに SBT_OPTS でPermanent 領域サイズなどの指定を行います。
$ export SBT_OPTS="-XX:+CMSClassUnloadingEnabled -XX:PermSize=256M -XX:MaxPermSize=512M"
これで $ sbt optimizeJS
が動くようになりました。