LoginSignup
10
10

More than 5 years have passed since last update.

はじめてのScala.js

Posted at

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 が動くようになりました。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10