SQL 编译器,读取 SQL 查询并生成类型安全的 Go、Kotlin、Python 和 TypeScript 代码。
colinhacks/reylo
把 .sql 文件直接导入 TypeScript,获得完整类型推断,且无需代码生成。
- Star
- 1,526
- Fork
- 18
- 未关闭 Issue
- 20
- 最近提交
- 17小时前
这是什么?
Reylo 可以把 .sql 文件中的查询直接导入 TypeScript,并像函数一样调用。结果行和参数的类型由 SQL 本身推导而来:它会在开发数据库上预处理查询,因此无需手写行类型,也无需维护生成的文件。
类型检查器直接向 Reylo 查询类型,所以列名拼错、参数不对或表被删除都会在 tsc 和编辑器中报出类型错误。Reylo 还能推断字段是否可为空、查询返回一行、零或一行还是多行,以及由枚举或 check 约束生成的联合类型。它支持 Postgres、MySQL 和 SQLite,可搭配 pg、postgres.js、mysql2、better-sqlite3、Bun.sql 等驱动使用。该功能依赖 TypeScript 7.1 的内容映射器,目前仍处于 beta 阶段。
核心功能
- 01将 .sql 文件导入为带类型的可调用查询函数。
- 02根据开发数据库中的 SQL 推导结果行和参数类型。
- 03在 tsc 和编辑器中将 SQL 错误报告为 TypeScript 错误。
- 04推断字段可空性、返回行数和枚举联合类型。
- 05支持 Postgres、MySQL、SQLite,并可使用自带的数据库驱动。
适用场景
- 让 TypeScript 行类型随数据库结构变化保持同步。
- 在不使用 ORM 的情况下编写手写 SQL,同时保留类型安全。
- 让编码智能体修改查询时,由类型检查找出遗漏的调用方。
快速上手
- 1
安装 Reylo
npm install reylo - 2
安装你所用数据库的引擎(Postgres、MySQL 或 SQLite)
npm install -D @reylosql/postgres - 3
在 .env 中设置 DATABASE_URL 指向你的开发数据库
- 4
在 Node 中加载 Reylo 后运行你的代码
node --env-file=.env --import reylo/register main.ts
使用前须知
- 需要 TypeScript 7.1,目前仍处于 beta 阶段。
- 需要 Node 24 或更高版本,以及一个正在运行的开发数据库。
- 类型检查需要 --runExternalCode 参数,以便 tsc 运行内容映射器。
入选 Repolode 开源周刊
- 第 2 期 · 给 AI 代理用的 Rust 无头浏览器,以及能做类型推断的 SQL 导入
直接在 TypeScript 里 import .sql 文件,得到带类型的查询函数。行和参数类型对照开发数据库推导出来,SQL 写错会作为 tsc 报错出现,全程不需要代码生成。
收录于专题
标签
常见问题
- reylo 是什么?
- 把 .sql 文件直接导入 TypeScript,获得完整类型推断,且无需代码生成。 Reylo 可以把 .sql 文件中的查询直接导入 TypeScript,并像函数一样调用。结果行和参数的类型由 SQL 本身推导而来:它会在开发数据库上预处理查询,因此无需手写行类型,也无需维护生成的文件。
- reylo 可以免费使用吗?用的什么许可证?
- reylo 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- reylo 还在维护吗?
- 活跃维护中。reylo 最近一次提交是在 2026年11月6日。
- reylo 适合用来做什么?
- 让 TypeScript 行类型随数据库结构变化保持同步。 在不使用 ORM 的情况下编写手写 SQL,同时保留类型安全。 让编码智能体修改查询时,由类型检查找出遗漏的调用方。
- reylo 怎么安装和运行?
- 安装 Reylo: npm install reylo 安装你所用数据库的引擎(Postgres、MySQL 或 SQLite): npm install -D @reylosql/postgres 在 .env 中设置 DATABASE_URL 指向你的开发数据库 在 Node 中加载 Reylo 后运行你的代码: node --env-file=.env --import reylo/register main.ts
- 在哪里获取 reylo?
- 源代码和安装说明在 GitHub 上:https://github.com/colinhacks/reylo
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
轻量级、无头的 TypeScript ORM,支持 PostgreSQL、MySQL 和 SQLite,可运行于 Node.js、Bun、Deno 及边缘运行时。
面向 Node.js 与 TypeScript 的 ORM,支持 PostgreSQL、MySQL、SQLite 等多种数据库。
跨平台 SQL 编辑器与数据库管理工具,支持 Linux、macOS 和 Windows,可连接 MySQL、PostgreSQL、SQLite 等多种数据库。
一个类型安全的 TypeScript SQL 查询构建器,支持表、列与结果类型的自动补全。
纯 Rust 的异步 SQL 工具库,可在编译期校验直接书写的 SQL,支持 PostgreSQL、MySQL/MariaDB 和 SQLite。