go用gin框架 实现热更新fresh
加入目录结构是/myapp/cmd/server/main.go
那我需要进入到server 执行fresh 但是fresh只能监控到当前执行的目录也就是server和他的子目录
我应该如何才能在myapp下面执行呢 这样能监控所有
测试
go用gin框架 实现热更新fresh
加入目录结构是/myapp/cmd/server/main.go
那我需要进入到server 执行fresh 但是fresh只能监控到当前执行的目录也就是server和他的子目录
我应该如何才能在myapp下面执行呢 这样能监控所有
测试
2 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读
2 回答772 阅读
3 回答542 阅读
943 阅读
1 回答722 阅读
2 回答671 阅读
使用 Fresh 在 Go 项目中实现热更新
目标
在
/myapp
根目录下运行fresh
,同时监控整个项目(包括/myapp/cmd/server/main.go
及其它子目录)。1. 理解 Fresh 的工作原理
fresh
是 Go 的热重载工具,监控.go
文件变化后自动重新编译和运行程序。fresh
仅监控执行命令时的当前目录及其子目录。/myapp/cmd/server
目录下运行fresh
时,无法监控/myapp
根目录及其它平行目录(如/myapp/pkg
或/myapp/internal
)。2. 目录结构
假设你的项目结构如下:
3. 解决方案
步骤 1:安装 Fresh
确定已安装
fresh
:步骤 2:创建 Fresh 配置文件
在
/myapp
目录下创建fresh.conf
文件:配置说明:
root: .
→ 设定项目根目录为/myapp
。build_target: ./cmd/server
→ 构建目标为/myapp/cmd/server/main.go
。watch: - ./**/*.go
→ 监控整个项目的.go
文件。步骤 3:运行 Fresh
在
/myapp
目录下执行:此时
fresh
会:/myapp
下所有.go
文件(包括cmd
,internal
,pkg
等)。/myapp/cmd/server/main.go
并生成可执行文件/myapp/tmp/myapp
。4. 替代方法:命令行参数
如果不想使用配置文件,可以直接在
/myapp
目录执行:参数解析:
-w .
→ 监控/myapp
目录及子目录。-b ./cmd/server
→ 构建目标为/myapp/cmd/server
。5. 运行测试
在
/myapp
目录下执行:访问
http://localhost:8080/ping
,应该返回:main.go
或其它.go
文件(例如添加新路由)。fresh
发现文件变更后自动重启应用。http://localhost:8080/ping
,确认更新生效。6. 常见问题
🔹 Q:fresh 没有监控某些目录?
✅ A:检查
fresh.conf
中的watch
配置,建议使用:🔹 Q:编译失败?
✅ A:查看
/myapp/tmp/build.log
,检查是否有语法错误或依赖问题。🔹 Q:fresh 没有自动重启?
✅ A:保证修改的文件在
watch
目录中,且未被exclude
排除。