Go でシングルバイナリな Web アプリを開発しているときに webpack --watch をうまいところやる
個人的なアプリをつくるとき、だいたい以下のような環境で作業しています
- WAF は Echo
- go-bindata をつかって各種アセットを Go のソースにくみこみ
- webpack をつかって JavaScript をコンパイル
にたような環境の人はおおいのでは。
Go のアプリのビルドと実行は fresh でやってます。みんなつかってるとおもいます。 webpack にかんしては --watch オプションをつかうことで、物事がおこなわれていきます。
ここで問題になるのが webpack がコンパイルしたものをいちいち go-bindata で処理しないといけないということです。これを手動でやるのはいかにもダサい。ということでいろいろかんがえたりしらべたりしたところ、 on-build-webpack というものをみつけました。
これで webpack の設定で
plugins: [
new WebpackOnBuildPlugin(function(stats) {
exec("./static.sh", function(e, o, e){});
})
]
とかしとくと webpack がビルドするたびに go-bindata が自動で実行されます。またこれで go-bindata.go が更新されるのでそれをトリガーに fresh がアプリをビルドしてくれます。
ブラウザの自動リロードなどはやっていない(あれすごくきらい)のでこれでだいたい満足な環境がえられています。