Modd 是一个响应文件变化执行指定的命令的工具。它并没有限制我们执行什么命令, 是一个相当通用的工具,可以用于各种语言、各种项目的热重启。 在发现对应的文件发生变化以后,就会执行指定的命令
**/*.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 文件修改时,会终止之前的服务进程,再重新启动服务进程,
后面的启动参数请按需修改。
protos/**/* **/*.go !pb/**/* {
prep: go generate ./...
prep: go test ./...
daemon: go run main.go
}
再来看一个复杂一点的例子,这个例子中,我在项目中有一些 protobuf 的描述文件,
我已经在代码中写好了生成相应的 go 文件的指令,只需要运行 go generate 就可以生成 .pb.go 文件在程序中使用了。
监控的文件列表中,增加了 protos/**/*,这里面包含了 protobuf 描述文件;
还有一项是 !pb/**/*,这里排除了 pb 文件夹下的所有文件,避免自动生成的文件再次触发 reload。
modd [-f /path/to/modd.conf] //-f ... 是可选的,它默认读取当前工作目录下的 modd.conf
总体来说,modd 是非常顺手的,配置灵活,功能完善,开发调试必备良品。