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でサイズ下がるといいですね