Buffalo 无内置 clean 命令,需手动清理:删二进制(如 myapp)、public/assets/、build/ 目录;清 webpack 缓存(node_modules/.cache)、packr 运行时缓存($HOME/.packr)及 Go 构建缓存(go clean -cache -modcache)。

buffalo build 生成的二进制和静态资源怎么删干净
Buffalo 的 buffalo build 默认会生成一个可执行文件(如 myapp)和 assets/ 下的打包资源(JS/CSS),但不会自动清理旧产物。反复构建会导致磁盘堆积、误运行旧二进制、或静态资源缓存错乱。
- 二进制文件默认输出到项目根目录,文件名与
go.mod中 module 名一致(如myapp),直接rm myapp即可 - 若用了
-o指定路径(如buffalo build -o ./dist/app),就删对应路径:rm ./dist/app - 静态资源(
packr打包进二进制的 assets)不单独落地为文件,无需手动删;但开发时 webpack 生成的public/assets/是真实文件,需主动清理:rm -rf public/assets/ - 别漏掉
build/目录:某些 CI 脚本或自定义 Makefile 会把产物放这里,rm -rf build/更彻底
buffalo dev 启动残留的临时文件在哪
buffalo dev 运行时会生成临时编译缓存、webpack watch 文件、以及 packr 的 runtime cache,它们不随 Ctrl+C 自动清除,下次启动可能卡顿或加载旧代码。
- webpack 编译产物在
public/assets/,已提过;watcher 的 node_modules/.cache 在项目根目录下,可删:rm -rf node_modules/.cache - packr 的 runtime cache 默认在
$HOME/.packr(Linux/macOS)或%USERPROFILE%\.packr(Windows),清它能解决 “修改模板后页面不更新” 问题:rm -rf $HOME/.packr - Go build cache 不归 Buffalo 管,但
buffalo dev会反复调用go build,建议定期清理:go clean -cache -modcache - buffalo.dev.yml 里设了
tmp_dir: ./tmp?那就顺手rm -rf ./tmp,否则日志、pid、临时二进制都堆在里面
为什么 buffalo clean 命令不存在
Buffalo CLI 没有内置 buffalo clean 命令——这不是遗漏,而是设计上认为“清理”行为太依赖上下文:你是想删构建产物、dev 缓存、vendor、还是测试数据库?统一命令反而容易误删。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
- 官方文档和源码中均无
clean子命令,运行buffalo clean会报unknown command "clean" - 社区常见做法是写个 shell alias 或 Makefile:
make clean包含rm -f myapp public/assets/ && go clean -cache -modcache - 注意别删
node_modules/除非真要重装依赖——buffalo dev启动时只读它,删了要重新npm install - Docker 构建中,应在
Dockerfile的构建阶段末尾加RUN rm -f myapp,避免最终镜像带调试用的旧二进制
删完之后怎么验证没残留
清理不是目的,确保下次构建/启动不受干扰才是关键。几个快速验证点:
- 运行
ls -l | grep -E '^(myapp|build|public/assets)',确认目标文件/目录已消失 - 启动
buffalo dev后观察终端第一行日志:若看到→ Building binary...而非→ Using cached binary...,说明 Go 缓存已清 - 打开浏览器开发者工具 Network 标签页,刷新页面,检查 JS/CSS 请求是否返回 200 且内容是最新修改(不是 304 或旧 hash)
- 对 SQLite 或本地 PostgreSQL 测试库,删掉
tmp/下的 DB 文件或dropdb后再跑buffalo db create -a,可排除迁移状态污染
真正麻烦的不是删不干净,而是删了不该删的——比如 models/migrations/ 下的 SQL 文件,或 gitignored 的 .env。清理前先 git status 看一眼,比什么都管用。









