Elm
enkan

JavaプロジェクトでElmのビルドする

More than 1 year has passed since last update.

https://github.com/kawasima/bouncr
これのpomとpackage.jsonみて

前提

Javaに軽量Webフレームワークのenkanとkotowariというのがあるんですが
https://qiita.com/kawasima/items/723646eb30a91d724352
これを使うとClojureみたいにrepl(疑似repl)を立ち上げっぱなしにして、その中で/compileとか/resetして開発するんですよ

Bouncr (バウンサー)ではviewは基本的にテンプレートエンジンですがちょっとリッチな入力フォームが欲しかったので一部をElmで作りました

/compile -> /reset

/compile -> /resetでElmのbuildも走るようにしました

enkanでの開発は、コードを書き換えたら疑似replで/compile をたたいてmvn compileして、次に/resetして実際に動いているものと入れ替える(たぶんclass loaderを作り直す感じだと思ってる)というフローになっているので/compileでElmのbuildが一緒に走ればいいということになりました

exec-maven-plugin

exec-maven-pluginというのがあってこれ使うと任意のコマンド叩けます
叩くコマンドはpackage.json に用意しました
yarn run build:elmを実行するとelmからjsファイルが作られます

で、これをたたくようにpomに書きます
https://github.com/kawasima/bouncr/blob/06b6becc7c5bfa4c843aeddfcd3a243b5f6f708f/pom.xml#L256
maven lifecycleのgenerate-sourcesのときに呼ばれるようになります

これでElmもJavaも一貫した開発フローで回せるようになりました
ただElm入ってないとcompileこけるようになってしまった問題がありますが、ちょっとmaven力が足りないので自分でやってません・・・

Formの一部分でもリッチなものを作るのにElmを使ってみてもいいと思います
ただuglify通しても200kbくらいあって、これは、大きいんだろうな・・・
0.19でサイズ下がるといいですね