go的代码热重载

背景

go的web开发中,经常会不断修改代码,而后手动重启服务器的情况,此时需要一个热重载的工具.

介绍

热重载通常英语称为 hot reload 或 live reload

  • air(维护中)
  • realize(曾经也有不少星星,现在已经停止开发)
  • gin(恰好与gin框架同名,已经不再维护)
  • fresh(两年前更新过,星星数不少,与martini兼容)

air

渊源

作者使用gin框架开发应用,发现缺少热重载工具.
试用了fresh后发现并不灵活.

安装

1
go get -u github.com/cosmtrek/air

使用

到有 main.go 的文件目录下,
运行

1
air

默认情况下会在当前目录下新建一个tmp文件夹用于存放编译好的二进制文件.

配置

使用

1
air init

会产生一个默认配置文件,可以修改其中的内容.
比如配置

1
2
[misc]
clean_on_exit = true

就会在结束运行后删除tmp文件夹

debug

air暂时没有dry-run模式,但其拥有debug模式,能够显示监测到了哪些文件的变化.
方便诊断与配置

与emacs的兼容性

模型情况下,emacs的占位文件 .#xxx.go 会被air监测到,以至于修改文件后会立即出发air重启应用.
配置文件中定义

1
2
[build]
exclude_regex = ['\.#.*\.go']

即可

参考

  1. 主要参考
  2. air
  3. gin
  4. fresh
  5. realize