在go开发过程中,每次修改代码后,都需要go run main.go太麻烦了,那么fresh就可以节省这一操作,代码保存后自动进行编译运行。
安装
go get github.com/pilu/fresh
使用
//进入您的项目根目录
cd /path/to/myapp
fresh
4:43:19 runner | InitFolders
14:43:19 runner | mkdir ./tmp
14:43:19 runner | mkdir ./tmp: file exists
14:43:19 watcher | Watching .
...
14:43:27 app | [GIN-debug] Listening and serving HTTP on 127.0.0.1:8004
此时,只要保存代码后,fresh自动重启,如下
14:46:52 watcher | sending event "main.go": MODIFY|ATTRIB
14:46:52 main | receiving first event "main.go": MODIFY|ATTRIB
14:46:52 main | sleeping for 6000 milliseconds
14:46:52 watcher | sending event "main.go": MODIFY
14:46:54 watcher | sending event "main.go": MODIFY|ATTRIB
14:46:58 main | flushing events
14:46:58 main | receiving event "main.go": MODIFY
14:46:58 main | receiving event "main.go": MODIFY|ATTRIB
14:46:58 main | Started! (38 Goroutines)
14:46:58 main | remove tmp/runner-build-errors.log: no such file or directory
14:46:58 build | Building...
...
[GIN-debug] Listening and serving HTTP on 127.0.0.1:8004
使用配置
fresh启动时可以使用自定义配置,例如有些静态文件是不需要热重启的,那就在ignored后面加入目录名。
fresh.conf配置文件,如下
root: .
tmp_path: ./tmp
build_name: runner-build
build_log: runner-build-errors.log
valid_ext: .go, .tpl, .tmpl, .html
no_rebuild_ext: .tpl, .tmpl, .html
ignored: assets, tmp, static
build_delay: 600
colors: 1
log_color_main: cyan
log_color_build: yellow
log_color_runner: green
log_color_watcher: magenta
log_color_app:
使用命令行
fresh -c fresh.conf
使用技艺
如果使用了自定义配置后,每次启动fresh时,都要写fresh -c fresh.conf,对于我这边懒人来说,不够简洁,那么我就会想怎么样更少的敲键盘,更快的启动。费了九牛二虎之力,终于想到一个方法,使用.sh来启动。 在main.go同级目录下,新建一个fresh.sh文件,内容如下:
fresh -c config/fresh.conf
echo "fresh completed"
给fresh.sh执行的权限,
chmod +x fresh.sh
好了,以后启动直接敲代码,注意前面的./不能缺少:
./fresh.sh
注意
fresh只监控了同级和下一级的文件变更,对于下二级的文件变更是不会触发热重启的。 例如:
// tree
main.go
fresh.sh
pages/page1.go
pages/home/page2.go
page1.go修改保存后会热重启。 page2.go修改保存后不会热重启。
结语
以后,就很愉快地写go代码了~~
参考
fresh 的更多设置,请参考:https://github.com/gravityblast/fresh