buffalo dev 默认监听 actions/、models/、locales/ 和 templates/ 目录下的文件变更以触发热重载;修改 main.go、go.mod、app.go 或中间件注册逻辑不触发重启,需手动重启。

buffalo dev 默认监听哪些路径和文件类型
它只自动重启当 actions/、models/、locales/ 和 templates/ 目录下的 Go 或模板文件发生变更;改 main.go、go.mod、config/env.go 或中间件注册逻辑,不会触发重载——这些属于构建入口或启动配置,必须手动 Ctrl+C 后再 buffalo dev。
删了 assets 目录后热重载卡住或报错
即使你建的是纯 API 项目并删掉了 assets/,Buffalo 的 watcher 仍会尝试初始化 webpack 相关逻辑,可能卡在 npm install 或直接报 webpack not found。此时应显式跳过前端构建:
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 运行
buffalo dev --skip-assets,彻底绕过 asset pipeline - 若已卡住,先
killall node(Linux/macOS)或任务管理器结束 node 进程,再重试 - 确认
buffalo dev --help输出中是否含--skip-assets选项(v1.0.1 支持)
IDE 保存导致热重载失效的常见原因
VS Code、GoLand 等默认启用 atomic write(原子写入),会先写临时文件再 rename,这会导致 inotify 事件丢失,watcher 完全无反应。
- 验证方式:终端执行
touch actions/home.go,看是否触发重启;若触发,说明是 IDE 写入策略问题 - VS Code 中可关闭该行为:设置里搜
files.useExperimentalFileWatcher设为false,或启用files.watcherExclude排除**/.git/objects/**类路径 - 不建议依赖 IDE 自动保存来触发重载——养成
Cmd+S后稍等 1 秒再刷新的习惯更可靠
修改了中间件或路由注册但没生效
这类代码通常写在 app.go 的 App() 函数里,而 buffalo dev 的 watcher 不监听 app.go ——它被归类为“应用入口配置”,不属于热重载范围。
- 典型场景:加了新中间件、改了
app.Use()顺序、调整了app.Resource()挂载路径 - 必须手动重启:先
Ctrl+C终止当前进程,再运行buffalo dev - 如果频繁改动路由结构,可考虑把路由定义抽到单独文件(如
routes/api.go),然后在app.go中 import 并调用,但注意 watcher 仍不会监听该文件,除非你把它放进actions/目录(不推荐)










