このプロジェクトはサーバサイドは Play Framework で、クライアントサイドは gulp + webpack + babel で作成するパターンのサンプルです。
クライアントサイドプロジェクトは ui
フォルダに展開する Git サブモジュールです。詳しくは https://github.com/itoasuka/cs4pf
を参照してください。
sbt で gulp をキックする部分は この記事 をまるパク参考にさせていただきました。
sbt run
で、play が開発モードで起動するわけですが、同時に browser-sync も起動します。
ブラウザで動作確認する場合は、http://localhost:3000/ にアクセスしてください。browser-sync 経由となり自動リフレッシュ機能の恩恵を得ることもできます。
テストは、ScalaTest で書きなおしています。また、ブラウザによるテストは HtmlUnit ではなく Chrome と Firefox を使用します。また、Scoverage によるカバレッジを取得します。
sbt clean coverage test coverageReport
test タスクを実行すると、クライアントサイドの gulp build
も実行します。これによってサーバサイド主導の Selenium
によるテストでもクライアントサイドのアーティファクトを使用することができます。
Scala.js いいと思うし、Isomorphic の夢も見ているけど、いまだ JavaScript のライブラリを使おうという動きが中心的で、JavaScript の進化の速さについていってないのが残念なので使わない。