Air实现Go程序的热重载(热加载)

发布时间:2026/7/10 13:11:36

Air实现Go程序的热重载(热加载)
简介air是Go的热加载工具它可以监听文件或者目录的变化自动编译重启程序提高开发的工作效率。场景在代码修改后需要通过ctrlc来停止项目go run的方式来再次重启项目在开发进行中频繁操作会很麻烦很影响开发的效率air刚好解决了这种问题Air的特性彩色日志输出自定义构建或二进制命令支持忽略子目录启动后支持监听新目录更好的构建过程安装方式1、Go最原始的安装方法但是配置文件会容易出问题go get-ugithub.com/cosmtrek/air2、使用go install安装方法需要配置.bashrc或.zshrcalias air‘$(go env GOPATH)/bin/air’source ~/.zshrc使用 Go 的版本为 1.16-1.23(不包括1.23)goinstallgithub.com/cosmtrek/airv1.40.4使用 Go 的版本为 1.23或更高推荐此方法go install github.com/air-verse/airlatest3、推荐使用 install.sh但是博主本人使用的是第二种方式# binary 文件会是在 $(go env GOPATH)/bin/aircurl-sSfLhttps://raw.githubusercontent.com/cosmtrek/air/master/install.sh|sh-s---b$(goenvGOPATH)/bin# 或者把它安装在 ./bin/ 路径下curl-sSfLhttps://raw.githubusercontent.com/cosmtrek/air/master/install.sh|sh-sair-v4、Docker的安装方式dockerrun-it--rm\-wPROJECT\-eair_wdPROJECT\-v$(pwd):PROJECT\-pPORT:APP SERVER PORT\cosmtrek/air-cCONF然后按照下面的方式在docker中运行项目dockerrun-it--rm\-w/go/src/github.com/cosmtrek/hub\-v$(pwd):/go/src/github.com/cosmtrek/hub\-p9090:9090\cosmtrek/air使用方式同官网的使用方式首先进入你的项目文件夹cd/path/to/your_project最简单的方法是执行# 优先在当前路径查找 .air.toml 后缀的文件如果没有找到则使用默认的air-c.air.toml您可以运行以下命令初始化把默认配置添加到当前路径下的.air.toml文件。air init在这之后你只需执行air命令无需添加额外的变量它就能使用.air.toml文件中的配置了。air如欲修改配置信息请参考 air_example.toml 文件.运行时参数# 会执行 ./tmp/main benchair bench# 会执行 ./tmp/main server --port 8080air server--port8080可以使用 – 参数分隔为 air 命令传递的参数和构建的二进制文件。# 会运行 ./tmp/main -hair ---h# 会使用个性化配置来运行 air然后把 -h 后的变量和值添加到运行的参数中air-c.air.toml ---hair_example.toml示例完整的官网配置信息根据需要修改。# [Air](https://github.com/cosmtrek/air) TOML 格式的配置文件# 工作目录# 使用. 或绝对路径, 请注意以下目录tmp_dir必须在根目录root下。root.tmp_dirtmp[build]# 只需要写你平常编译使用的shell命令。也可以使用make# Windows平台示例: cmd go build -o tmp\main.exe .cmdgo build -o ./tmp/main .# 由cmd命令得到的二进制文件名# Windows平台示例bin tmp\main.exebintmp/main# 自定义执行程序的命令可以添加额外的编译标识例如添加 GIN_MODErelease# Windows平台示例full_bin tmp\main.exefull_binAPP_ENVdev APP_USERair ./tmp/main# 监听扩展名的文件include_ext[go,tpl,tmpl,html]# 忽略不监听文件的扩展名或目录exclude_dir[assets,tmp,vendor,frontend/node_modules]# 监听指定目录的文件include_dir[]# 忽略不监听指定文件exclude_file[]# 忽略符合通过正则匹配到的文件exclude_regex[_test\\.go]# 忽略未进行修改的文件exclude_unchangedtrue# 按照目录的符号链接follow_symlinktrue# 这个日志文件放在你的tmp_dir中logair.log# 如果文件更改过于频繁则没有必要在每次更改时都触发构建。可以设置触发构建的延迟时间/毫秒delay1000# ms# 发生构建错误时停止运行旧的二进制文件stop_on_errortrue# 杀死进程前发送中断信号(Windows不支持)send_interruptfalse# 发送中断信号后延迟时间/毫秒kill_delay500# ms# 在运行二进制文件时添加额外的参数 (bin/full_bin)。将运行“./tmp/main hello world”args_bin[hello,world][log]# 显示日志时间timefalse[color]# 自定义每个部分的颜色。如果未找到颜色请使用原始应用程序日志。mainmagentawatchercyanbuildyellowrunnergreen[misc]# 退出时删除 tmp 目录clean_on_exittrue至此按照使用方法先执行air init然后执行air热加载就启动了调试运行air -d命令能打印所有日志。遇到 “command not found: air” 或 “No such file or directory”exportGOPATH$HOME/xxxxxexportPATH$PATH:$GOROOT/bin:$GOPATH/binexportPATH$PATH:$(goenvGOPATH)/bin---- 请确认这行在您的配置信息中部署请注意这需要 Go 1.16 因为使用go mod来管理依赖。# 1. 先fork项目# 2. 然后克隆clone下来mkdir-p$GOPATH/src/github.com/cosmtrekcd$GOPATH/src/github.com/cosmtrekgitclone gitgithub.com:YOUR USERNAME/air.git# 3. 切换路径安装依赖cdairmakeci# 4. 这样就可以使用了makeinstall

相关新闻

5分钟掌握网盘直链解析:告别龟速下载的终极解决方案

5分钟掌握网盘直链解析:告别龟速下载的终极解决方案

2026/7/10 13:11:36

5分钟掌握网盘直链解析:告别龟速下载的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…

OpenCV 中 Mat 的 type 类型介绍

OpenCV 中 Mat 的 type 类型介绍

2026/7/10 13:11:36

OpenCV 中矩阵 cv::Mat 的成员函数 type() 回了矩阵相关的数据类型信息,除元素的数据类型(低3位)外,还包括通道 (channel) 的个数(高3位) cv::Mat test(100, 100, CV_32FC3); int type test.type(); 1.…

膜结构汽车棚的安装费用贵吗?

膜结构汽车棚的安装费用贵吗?

2026/7/10 13:01:35

《【膜结构汽车棚】哪家好:排名前五专业深度测评》开篇:定下基调在如今汽车保有量不断攀升的时代,膜结构汽车棚因其美观、实用等特点受到众多车主和场所管理者的青睐。本次测评旨在为对膜结构汽车棚感兴趣的人群提供全面、客观的产品信息&…

bRPC深度架构解析:从C++高性能RPC框架到百万级并发实战优化

bRPC深度架构解析:从C++高性能RPC框架到百万级并发实战优化

2026/7/10 16:31:43

bRPC深度架构解析:从C高性能RPC框架到百万级并发实战优化 【免费下载链接】brpc brpc is an Industrial-grade RPC framework using C Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recom…

newapi签到 - 青龙面板自动签到脚本

newapi签到 - 青龙面板自动签到脚本

2026/7/10 16:31:43

newapi自动签到、获取额度。工具类平台的签到和任务每天都能获取资源和权益,但手动操作效率低。这款自动脚本帮你轻松完成日常任务。功能介绍 「newapi签到」脚本支持以下功能: • 自动签到 • 自动完成任务 • 多账号管理 • 结果通知 使用方法 1. 下载…

gphotos-uploader-cli与官方工具对比:为什么选择命令行解决方案

gphotos-uploader-cli与官方工具对比:为什么选择命令行解决方案

2026/7/10 16:31:43

gphotos-uploader-cli与官方工具对比:为什么选择命令行解决方案 【免费下载链接】gphotos-uploader-cli Command line tool to mass upload media folders to your google photos account(s) (Mac OS / Linux) 项目地址: https://gitcode.com/gh_mirrors/gp/gphot…

为什么你的Notion知识库始终“死气沉沉”?——ChatGPT深度集成后,知识复用率提升317%的底层逻辑

为什么你的Notion知识库始终“死气沉沉”?——ChatGPT深度集成后,知识复用率提升317%的底层逻辑

2026/7/10 16:31:43

更多请点击: https://intelliparadigm.com 第一章:为什么你的Notion知识库始终“死气沉沉”? 你精心搭建的Notion知识库,页面排版精美、数据库结构清晰、图标色彩协调——可半年过去,它却像一座被遗忘的数字博物馆&am…

如何用kill-doc实现一键下载30+文档平台:新手5分钟终极指南

如何用kill-doc实现一键下载30+文档平台:新手5分钟终极指南

2026/7/10 16:31:43

如何用kill-doc实现一键下载30文档平台:新手5分钟终极指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…

sVim黑名单功能详解:如何在特定网站禁用快捷键

sVim黑名单功能详解:如何在特定网站禁用快捷键

2026/7/10 16:21:43

sVim黑名单功能详解:如何在特定网站禁用快捷键 【免费下载链接】sVim Safari extension with shortcuts similar to Vim 项目地址: https://gitcode.com/gh_mirrors/sv/sVim sVim是一款为Safari浏览器设计的Vim风格快捷键扩展,让用户能够在浏览器…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/9 19:40:56

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/9 18:28:30

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/10 6:57:56

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

终极原神FPS解锁器完整指南:轻松突破60帧限制

终极原神FPS解锁器完整指南:轻松突破60帧限制

2026/7/10 0:00:42

终极原神FPS解锁器完整指南:轻松突破60帧限制 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 原神FPS解锁器是一款专为《原神》玩家设计的开源工具,通过先进的Wri…

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?[特殊字符]

2026/7/10 0:00:42

YesPlayMusic:如何用高颜值播放器重塑你的网易云音乐体验?🎵 【免费下载链接】YesPlayMusic 高颜值的第三方网易云播放器,支持 Windows / macOS / Linux :electron: 项目地址: https://gitcode.com/gh_mirrors/ye/YesPlayMusic…

从零实现红黑树:手写C++的set与map容器

从零实现红黑树:手写C++的set与map容器

2026/7/10 0:00:42

1. 项目概述:从STL容器到自研轮子在C的日常开发中,std::set和std::map是我们再熟悉不过的伙伴了。它们一个负责管理不重复的集合,一个负责维护键值对映射,底层都依赖一颗高效的红黑树来保证数据的有序性和操作的性能。但你是否曾想…