chore(dev): 配置本地开发环境 #1
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "chore/devenv-setup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
本 PR 为 EasyAI AI Gateway 增加基于 devenv/Nix 的本地开发环境配置,目标是让新成员或新机器可以用统一入口获得一致的 Go、Node.js、pnpm、PostgreSQL 与常用调试工具,减少手工安装、版本漂移和数据库初始化差异。
变更内容
新增
devenv.nix,声明项目本地开发环境:package.json安装依赖。dev、build、test-all、lint、migrate、db-create、api-test、web-build等短命令,统一转发到根 package scripts 或 Nx 目标。easyai_ai_gateway数据库。pgcrypto与vector扩展,匹配 API 侧加密、向量能力相关依赖。AI_GATEWAY_DATABASE_URL指向 devenv runtime 下的 PostgreSQL Unix socket,避免和本机 Docker/PostgreSQL TCP 端口互相影响。AI_GATEWAY_SKIP_DB_CREATE=1,避免在 devenv 环境内重复调用 Docker 数据库创建逻辑。新增
devenv.yaml与devenv.lock:devenv.yaml声明 devenv 使用的 nixpkgs 输入来源。devenv.lock锁定 devenv 与 nixpkgs 实际 revision,保证不同机器进入环境时拿到一致依赖图。新增
starship.toml:调整
scripts/dev.sh:AI_GATEWAY_SKIP_DB_CREATE=1时跳过 Docker 数据库创建,适配 devenv 管理 PostgreSQL 的场景。更新
.gitignore:.devenv*、devenv.local.nix、devenv.local.yaml和.direnv等本地环境产物。devenv 的作用
devenv是项目级开发环境编排工具。它把“进入项目后需要哪些工具、哪些服务、哪些环境变量、哪些快捷命令”写进仓库配置中。对本项目来说,devenv 主要承担:Nix 的作用
Nix是 devenv 底层使用的可复现包管理与构建系统。它的价值不只是“安装工具”,而是让工具来源、版本和依赖闭包可声明、可锁定、可复现。对本项目来说,Nix 主要提供:devenv.lock锁定依赖输入,减少不同机器上的版本漂移。使用方式
devenv shell进入开发环境。dev:创建/迁移数据库,并启动 API 与 Web。test-all:运行 API 与 Web 测试目标。build:构建 API 与 Web。lint:运行 Web 与 contracts 类型检查。migrate:执行 API 数据库迁移。api-test:只运行 Go API 测试。web-build:只构建 Web 前端。验证
devenv test --no-tui --override-dotfiledevenv shell --no-tui -- pnpm lintdevenv shell --no-tui -- pnpm testdevenv shell --no-tui -- pnpm build说明:直接运行
devenv test --no-tui时,本机已有同一 devenv PostgreSQL socket lock,占用/tmp/devenv-d4e760e/postgres/.s.PGSQL.5432.lock,导致 postgres 进程启动冲突;使用--override-dotfile隔离 state 后验证通过。风险与影响
scripts/dev.sh新增的AI_GATEWAY_SKIP_DB_CREATE分支只在显式设置该环境变量时生效,不影响默认 Docker 数据库创建流程。devenv.lock会固定当前 devenv/nixpkgs 输入,后续升级工具链需要通过更新 lock 文件进入 review。