开发者 Ilbert 在 GitHub 上发布了名为 Bun-sqlgen 的开源项目,旨在解决 Bun 运行时下编写原生 SQL 的类型安全问题。通常在使用 Bun 的原生数据库客户端 `Bun.sql` 时,开发者面临两难选择:要么手写 SQL 获得 `any[]` 返回值导致类型缺失,要么使用 ORM 或查询构建器(如 Drizzle、Kysely)但这改变了原生 SQL 的编写习惯。Bun-sqlgen 提出了一种折中方案,允许开发者继续在迁移文件中编写原生的 Raw SQL 查询,并通过代码生成步骤来解决类型定义问题。其工作原理是:开发者在查询中添加特定名称标签,代码生成器会读取 `.sql` 迁移文件,利用 PGlite(无需 Docker)或 SQLite 启动临时的内存数据库,准备并执行这些查询,最后生成一个 `.d.ts` TypeScript 声明文件。该文件将查询名称映射到实际的结果类型,从而让 TypeScript 编译器能够检查字段是否存在及可空性。针对 PostgreSQL `describe` 接口不返回列可空性信息的限制,该项目通过查询计划和目录进行推断,并支持手动覆盖。目前该项目处于 v0.1 早期阶段,运行时完全依赖 Bun.sql,生成的类型文件可作为唯一的代码产物。
事件分析
💡 核心观点:代码生成技术正在取代传统 ORM 抽象,在保留 SQL 灵活性的同时完美解决类型安全问题。
原文链接:Hacker News







AI周刊:大模型、智能体与产业动态追踪