用途:为 Elixir Phoenix 项目提供标准配置模式,覆盖新建项目、Bun 资源构建、Tailwind v4、devenv 环境与 PostgreSQL 数据库接入。
主要能力与用法:
- 创建项目。标准项目运行 mix phx.new my_app --database postgres;umbrella 项目加 --umbrella 参数。
- 用 Bun 替代 esbuild。在 mix.exs 的 deps 中把 {:esbuild, ...} 替换为 {:bun, "~> 1.4", runtime: Mix.env() == :dev} 与 {:tailwind, "~> 0.2", runtime: Mix.env() == :dev};在 config/config.exs 用 config :bun 和 config :tailwind 配置版本、args 与 cd;umbrella 项目的 cd 指向 ../apps/my_app。同时在 config/dev.exs 更新 watchers,并在 mix.exs 的 assets.deploy 别名中加入 tailwind、bun 与 phx.digest。
- NODE_PATH 解析。将 NODE_PATH 指向项目根 deps/ 目录,使 Bun 能从 Phoenix 依赖中解析 phoenix、phoenix_html 等包,无需 npm install。devenv.nix 中已配置 env.NODE_PATH = "${config.git.root}/deps";非 devenv 环境可 export NODE_PATH="$(pwd)/deps"。
- 二进制路径。在 config/runtime.exs 中读取 MIX_BUN_PATH 与 MIX_TAILWIND_PATH 并设置 config :bun, path: 与 config :tailwind, path:,设置后 hex 包跳过下载、直接使用 devenv 通过 lib.getExe 提供的 Nix 路径二进制。
- devenv 与数据库。PostgreSQL 仅通过 Unix socket 运行,DATABASE_URL 使用 ?socket= 参数,PGHOST 指向 devenv 状态目录。Ecto 配置可同时支持 Unix socket 与 TCP:根据 PGHOST 是否以 / 开头决定使用 socket_dir 还是 hostname 与 port。生产环境在 runtime.exs 中从 DATABASE_URL 读取并配置 Repo 与 POOL_SIZE。
- e2e 测试。测试放在 e2e_test/,通过 mix.exs 定义 "test.e2e": ["run --no-halt", "cmd mix test e2e_test/"],并以 mix test.e2e 显式执行;不应加入 CI、pre-commit 或常规构建测试流程。
适用场景:使用 Bun、Tailwind v4、devenv 与 PostgreSQL 的 Phoenix 新项目或 umbrella 项目搭建与配置。
限制:资料未提供各命令的执行前置条件、Phoenix/Elixir 版本要求,也未说明非 devenv 环境下的完整搭建步骤,相关内容暂未提供。