Diary

@ssig33

19 Jan 2017 Thu 14:57

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 がアプリをビルドしてくれます。

ブラウザの自動リロードなどはやっていない(あれすごくきらい)のでこれでだいたい満足な環境がえられています。