buffalo new 命令的参数在初始化时即锁定核心架构,如--db-type决定models/生成与pop驱动匹配,--api跳过MVC结构,--npm/--yarn指定包管理器,选错需重来不可运行时调整。

Buffalo 项目初始化时的安装参数不是“后期配置”的东西,而是 buffalo new 命令执行时一次性决定的——选错就只能重来或手动补救,没有运行时开关可调。
buffalo new 命令的必需参数和常见组合
项目骨架生成阶段就锁定了数据库驱动、前端模板、是否启用 TypeScript 等核心选项,这些无法靠改 config 文件回退。
-
buffalo new myapp --db-type postgres:指定 PostgreSQL(默认 sqlite3),影响database.yml初始内容和模型生成逻辑 -
buffalo new myapp --with-dep:显式启用 dep 包管理(已过时,Go 1.16+ 默认用 modules;但老项目迁移时可能需此参数) -
buffalo new myapp --api:跳过前端构建链路(不生成assets/、不装 webpack、禁用 Plush 模板自动渲染),适合纯 API 服务 -
buffalo new myapp --skip-yarn:避免自动执行yarn install,适用于只用 Go 渲染、不走 JS bundle 的轻量场景
错误现象:执行 buffalo new myapp 后发现没生成 models/ 或 actions/,大概率是漏了 --db-type 或误加了 --api 却没意识到它会砍掉整个 MVC 结构。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
为什么不能等项目建好再改数据库类型?
因为 buffalo new 不仅写 database.yml,还会决定是否生成 models/ 目录、是否在 main.go 中调用 pop.Connect()、甚至影响 buffalo db generate model 命令的可用性。
- 若初始用
--db-type sqlite3,但后续想切 PostgreSQL:需手动删掉models/并重新buffalo db generate model,否则pop迁移会报 “no dialect registered for sqlite3” —— 因为新版 Buffalo 默认不再内置 sqlite3 驱动 -
dialect字段必须与go.mod中实际引入的 pop 驱动匹配,比如用了github.com/gobuffalo/pop/v6就得配postgres,写成postgresql或pg都会失败
前端构建参数对开发流程的实际影响
是否启用 Webpack、TypeScript、CSS 预处理器,直接决定你能否在 assets/js/application.js 里写 import、用 async/await、或者跑 tailwindcss。
-
--yarn和--npm决定包管理器,但 Buffalo 本身不干预具体命令;选错只会让你后续yarn dev报错,而非框架崩溃 -
--vite(v0.18.12+ 支持)会替换掉 Webpack,生成vite.config.ts和src/目录,此时assets/下的旧文件将被忽略 - 没加
--with-webpack却在assets/js/里写了 ES6 模块?buffalo dev会编译失败,报 “Unexpected token ‘export’”,因为默认只做简单拼接,不转译
真正容易被忽略的是:所有这些参数只在 buffalo new 时生效,后续无法通过 buffalo generate 或修改配置文件“升级”出缺失的目录结构。一旦选错,最省事的做法就是删掉项目重来——别试图修 go.mod + 补目录 + 改 app.go,那比重生成还容易漏掉 hook 注册点。










