buffalo new --api 不能跳过数据库配置,仍会生成 database.yml 和 models/;必须配合 --skip-pop 才能彻底移除数据库相关代码与依赖,且需手动清理 r.html() 引用并确保无 models.db 调用。

buffalo new --api 能跳过数据库配置吗
不能。即使加 --api,buffalo new 仍会生成 config/database.yml 和 models/ 目录,并在 app.go 中初始化 models.DB。它只是不生成前端相关文件,数据库部分照常写入。
真正跳过数据库配置的唯一方式
用 --skip-pop 参数。这是 Buffalo 1.0+ 明确支持的开关,作用是:不生成 models/、不写 database.yml、不在 app.go 中调用 models.NewDB(),也不会引入 github.com/gobuffalo/pop/v6 依赖。
执行命令:
buffalo new myapp --api --skip-pop
注意两点:
-
--skip-pop必须和--api一起用;单独用buffalo new myapp --skip-pop会报错,因为全栈模式默认要模板渲染,而跳过 pop 后r.HTML()会因缺少plush上下文支持而 panic - 生成后手动删掉
actions/render.go里对r.HTML()的引用(如果存在),只保留r.JSON()或直接c.Render(),否则编译失败
跳过数据库后还剩什么
你会得到一个极简的路由 + 中间件骨架,包含:
-
actions/app.go:带完整中间件链(Logger、RequestID 等)和App()函数 -
grifts/:空目录,但 CLI 任务机制仍可用(比如自定义导入脚本) -
config/buffalo-app.yml:基础框架配置,如端口、host、env -
main.go:标准入口,调用app.App()启动
没有 models/、没有 database.yml、没有 pop 或 sqlx 依赖——这意味着你后续要用什么 ORM 或原生 database/sql 完全自由,框架不干涉。
容易被忽略的兼容性细节
--skip-pop 不影响 buffalo dev 启动,但如果你在 actions/ 里写了依赖 models.DB 的代码(比如手动生成了 model 文件又忘了删 import),go build 会直接失败。Buffalo 不会帮你校验这个,错误信息只显示 undefined: models,得自己翻 import 和 go.mod。











