Go 开发不像 PHP(解释型语言) 那样可以修改代码实时生效,而需要重新编译,如果每次手动执行肯定会降低开发速度。本文将介绍一款开发工具 Modd 来解决这一问题,它可以监控文件修改并重启服务进程。
项目结构
1cmd/
2 app/
3 main.go
4configs/
5 app.toml
6internal/
7modd.conf
8...
启动服务:
go run cmd/app/main.go -c configs/app.toml
安装 Modd
1$ env GO111MODULE=on go get github.com/cortesi/modd/cmd/modd
配置 Modd
在项目根目录创建 modd.conf,并添加以下内容:
modd.conf 可以放在任何地方,只需要执行 modd 时通过
-f
参数指定即可。
**/*.go {
prep: go test @dirmods
}
# Exclude all test files of the form *_test.go
**/*.go !**/*_test.go {
daemon +sigterm: go run cmd/app/main.go -c configs/app.toml
}
prep: go test @dirmods
在执行 modd 时会进行单元测试。daemon +sigterm: ...
在监控单 go 文件修改时,会终止之前的服务进程,再重新启动服务进程,后面的启动参数请按需修改。
执行 Modd
1$ cd /path/to/project
2$ $GOPATH/bin/modd [-f /path/to/modd.conf]
$GOPATH
改成你本地的 Go 路径,也可以将 $GOPATH/bin 添加到环境变量,然后modd
。-f ...
是可选的,它默认读取当前工作目录下的modd.conf
更多
更多的用法可以在 Modd 仓库 了解,另外该工具也可以用于很多场景,本文只是介绍其在 Go 开发的一个例子。