LoginSignup
1

More than 5 years have passed since last update.

Goのサーバーをソースを変更したら自動でリロードするMakefile

Posted at

Goのサーバー開発中にはソースコードを変更したら自動でサーバーが再起動して最新のコードが反映されると素早い開発が可能になり便利です。
Javaのアプリケーション・サーバーなどによく実装されているオートリロードという奴です。サーバーのフレームワークによっては標準で用意されている場合もあるようですが、Goの多くのフレームワークではオートリロードは用意されていません。そこで、Makefileとfswatchでオートリロードを実現したものがこちらです。

fswatchがインストールされていなければbrewなどでインストールしてもらう必要があります。

こちらの記事のコードをベースに修正を加えたものです。
https://medium.com/@olebedev/live-code-reloading-for-golang-web-projects-in-19-lines-8b2e8777b1ea

.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

と、ここまで書いておいてなんですが、下記のツールを使ったほうが早いかも。。。
あんまりメンテされていないではありますが色々設定できて便利そうです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1