1. devneko

    Posted

    devneko
Changes in title
+Goのサーバーをソースを変更したら自動でリロードするMakefile
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,38 @@
+Goのサーバー開発中にはソースコードを変更したら自動でサーバーが再起動して最新のコードが反映されると素早い開発が可能になり便利です。
+Javaのアプリケーション・サーバーなどによく実装されているオートリロードという奴です。サーバーのフレームワークによっては標準で用意されている場合もあるようですが、Goの多くのフレームワークではオートリロードは用意されていません。そこで、Makefileとfswatchでオートリロードを実現したものがこちらです。
+
+fswatchがインストールされていなければbrewなどでインストールしてもらう必要があります。
+
+こちらの記事のコードをベースに修正を加えたものです。
+https://medium.com/@olebedev/live-code-reloading-for-golang-web-projects-in-19-lines-8b2e8777b1ea
+
+```make
+.PHONY: server restart kill clean
+
+APP = bin/server
+GO_FILES = $(wildcard **/*.go)
+PID = /tmp/go-server.pid
+MAIN = api/main.go
+
+serve: restart
+ @fswatch -e ".*" -i "\\.go$$" . | xargs -n1 -I{} make restart || make kill
+
+restart: clean kill $(APP)
+ @$(APP) & echo $$! > $(PID)
+
+kill:
+ @kill `cat $(PID)` 2> /dev/null || true
+
+$(APP): $(GO_FILES)
+ @echo "build..."
+ @go build -o $@ $(MAIN)
+
+clean:
+ @rm $(APP) || true
+```
+
+
+と、ここまで書いておいてなんですが、下記のツールを使ったほうが早いかも。。。
+あんまりメンテされていないではありますが色々設定できて便利そうです。
+
+https://github.com/pilu/fresh