Repolode
colinhacks

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. 1

    安装 Reylo

    npm install reylo
  2. 2

    安装你所用数据库的引擎(Postgres、MySQL 或 SQLite)

    npm install -D @reylosql/postgres
  3. 3

    在 .env 中设置 DATABASE_URL 指向你的开发数据库

  4. 4

    在 Node 中加载 Reylo 后运行你的代码

    node --env-file=.env --import reylo/register main.ts

使用前须知

  • 需要 TypeScript 7.1,目前仍处于 beta 阶段。
  • 需要 Node 24 或更高版本,以及一个正在运行的开发数据库。
  • 类型检查需要 --runExternalCode 参数,以便 tsc 运行内容映射器。

入选 Repolode 开源周刊

收录于专题

标签

常见问题

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 数据每日更新。

相关项目