Air

引入 1 go install github.com/air-verse/air@latest 启动 1 2 3 air init # 初始化配置文件 air -c .air.toml # 启动服务并指定配置文件 air # 使用默认配置启动服务 运行时参数 可以在命令后面添加参数来构建二进制文件 1 2 3 4 5 # Will run ./tmp/main bench air bench # Will run ./tmp/main server --port 8080 air server --port 8080 也可用通过--来分割参数 1 2 3 4 5 # Will run ./tmp/main -h air -- -h # Will run air with custom config and pass -h argument to the built binary air -c .air.toml -- -h 配置 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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 # [Air](https://github.com/air-verse/air) 的配置文件,格式为 TOML # 工作目录 # 当前目录 . 或绝对路径,请注意后续的目录必须在根目录下。 root = "." tmp_dir = "tmp" # 临时文件目录 [build] # 在每次构建之前运行的命令数组 pre_cmd = ["echo 'hello air' > pre_cmd.txt"] # 构建前执行的命令 # 普通的 shell 命令。你也可以使用 `make`。 cmd = "go build -o ./tmp/main ." # 构建 Go 项目生成二进制文件的命令 # 在 ^C (中断) 之后运行的命令数组 post_cmd = ["echo 'hello air' > post_cmd.txt"] # 构建后执行的命令 # 由 `cmd` 命令生成的二进制文件。 bin = "tmp/main" # 二进制文件路径 # 自定义二进制文件,可以在运行应用程序时设置环境变量。 full_bin = "APP_ENV=dev APP_USER=air ./tmp/main" # 完整运行二进制文件的命令,包含环境变量 # 在运行二进制文件(bin/full_bin)时添加额外的参数,将会运行 './tmp/main hello world'。 args_bin = ["hello", "world"] # 传递给二进制文件的参数 # 监听这些文件扩展名的变化。 include_ext = ["go", "tpl", "tmpl", "html"] # 监听的文件扩展名 # 忽略这些扩展名的文件或目录。 exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules"] # 忽略的目录 # 如果你指定了,监听这些目录。 include_dir = [] # 监听的目录 # 监听这些文件。 include_file = [] # 监听的文件 # 忽略这些文件。 exclude_file = [] # 忽略的文件 # 排除特定的正则表达式。 exclude_regex = ["_test\\.go"] # 忽略匹配正则表达式的文件 # 排除未更改的文件。 exclude_unchanged = true # 忽略未更改的文件 # 是否跟随符号链接 follow_symlink = true # 跟随符号链接 # 这个日志文件会放在你的 tmp_dir 中。 log = "air.log" # 日志文件 # 使用轮询文件变化而不是 fsnotify。 poll = false # 是否轮询文件 # 轮询间隔(默认为 500ms)。 poll_interval = 500 # 轮询间隔(毫秒) # 如果文件变更频繁,不需要每次都触发构建。 delay = 0 # 构建延迟(毫秒) # 当构建错误时停止运行旧的二进制文件。 stop_on_error = true # 构建出错时是否停止旧二进制文件 # 在终止进程前发送中断信号(Windows 不支持此功能) send_interrupt = false # 是否发送中断信号 # 发送中断信号后的延迟 kill_delay = 500 # 中断延迟(纳秒) # 是否重新运行二进制文件 rerun = false # 是否重新运行二进制文件 # 每次执行后的延迟 rerun_delay = 500 # 执行后的延迟(毫秒) [log] # 显示日志时间 time = false # 是否显示日志时间 # 只显示主日志(静默 watcher、构建、运行器的日志) main_only = false # 是否只显示主日志 [color] # 自定义每个部分的颜色。如果没有找到颜色,则使用应用程序的原始日志颜色。 main = "magenta" # 主日志颜色 watcher = "cyan" # 文件监听器的日志颜色 build = "yellow" # 构建器的日志颜色 runner = "green" # 运行器的日志颜色 [misc] # 退出时删除 tmp 目录 clean_on_exit = true # 退出时是否删除临时目录 [screen] clear_on_rebuild = true # 构建后是否清屏 keep_scroll = true # 保持滚动 # 启用浏览器的实时重载。 [proxy] enabled = true # 是否启用代理 proxy_port = 8090 # 代理端口 app_port = 8080 # 应用程序端口 基于Docker构建镜像 1 2 3 4 5 6 7 8 9 10 11 12 13 services: my-project-with-air: image: cosmtrek/air # working_dir value has to be the same of mapped volume working_dir: /project-package ports: - <any>:<any> environment: - ENV_A=${ENV_A} - ENV_B=${ENV_B} - ENV_C=${ENV_C} volumes: - ./project-relative-path/:/project-package/

2024-09-14 · 3 分钟 · Nebula