air实现go应用实时热重载

今天要介绍一个比较好用的go应用自动热加载工具: air,使用vscode的同学,再也不用手动 Ctrl+C + go run了,它还有以下特性:

  • Colorful log output
  • Customize build or binary command
  • Support excluding subdirectories
  • Allow watching new directories after Air started
  • Better building process

安装

使用go安装

1
go install github.com/cosmtrek/air@latest

然后在项目根目录找到 .air.toml文件,没有就新建一个,我的是windows机器,其他系统可以参考github原配置文件,这里附上我的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# Config file for [Air](https://github.com/cosmtrek/air) in TOML format

# Working directory
# . or absolute path, please note that the directories following must be under root.
root = "."
tmp_dir = "tmp"

[build]
# Just plain old shell command. You could use `make` as well.
# go build -o ./tmp/main .
cmd = "go build -o ./tmp/main.exe ."
# Binary file yields from `cmd`.
bin = "tmp/main"
# Customize binary. linux: APP_ENV=dev APP_USER=air ./tmp/main
full_bin = "./tmp/main.exe"
# Watch these filename extensions.
include_ext = ["go", "tpl", "tmpl", "html", "yml"]
# Ignore these filename extensions or directories.
exclude_dir = ["assets", "tmp", "vendor", "logs", "files", "examples"]
# Watch these directories if you specified.
include_dir = []
# Exclude files.
exclude_file = []
# Exclude specific regular expressions.
exclude_regex = ["_test\\.go"]
# Exclude unchanged files.
exclude_unchanged = true
# Follow symlink for directories
follow_symlink = true
# This log file places in your tmp_dir.
log = "air.log"
# It's not necessary to trigger build each time file changes if it's too frequent.
delay = 1000 # ms
# Stop running old binary when build errors occur.
stop_on_error = true
# Send Interrupt signal before killing process (windows does not support this feature)
send_interrupt = false
# Delay after sending Interrupt signal
kill_delay = 500 # ms
# Add additional arguments when running binary (bin/full_bin). Will run './tmp/main hello world'.
args_bin = ["hello", "world"]

[log]
# Show log time
time = false

[color]
# Customize each part's color. If no color found, use the raw app log.
main = "magenta"
watcher = "cyan"
build = "yellow"
runner = "green"

[misc]
# Delete tmp directory on exit
clean_on_exit = true

到此就配置完成了,终端输入 air 就可以启动了,gin框架搭配air很舒服,当然使用goland开发工具的小伙伴也可以选择手动debug或build

注意:要想在mac上使用请删掉上面main文件的exe后缀,建议在mac系统使用本工具