CLI 工具
Sleet CLI 为 FiveM Sleet ORM 提供代码生成和数据库工具。
安装
通过 npm 安装 (Windows - 推荐)
bash
npm install -g sleet-orm-cli从源码编译 (Go 1.21+)
bash
git clone https://github.com/SleetCo/sleet-orm-cli.git
cd sleet-orm-cli
go build -o sleet .将二进制文件添加到 PATH,或直接运行 ./sleet。
命令
Sleet CLI 提供三个主要命令来处理您的 Schema:
sleet generate
从 Schema 文件生成 LuaLS 类型注解。
在嵌入式 Lua VM 中执行您的 schema.lua,拦截所有 sl.table() 调用,并生成包含完整 LuaLS 类型推断的 ---@meta 文件。
bash
sleet generate schema.lua
sleet generate schema.lua -o .sleet/types.lua
sleet generate schema.lua --stdout默认输出: 当前目录下的 .sleet/types.lua。
生成内容:
- 表记录的类型定义
- 列类型定义
- Schema 对象类型
- 完整的 LuaLS 集成,支持自动完成和类型检查
sleet sql
从 Schema 生成 MySQL CREATE TABLE 语句。
bash
sleet sql server/schema.lua
sleet sql server/schema.lua -o database/init.sql
sleet sql server/schema.lua --stdout生成 CREATE TABLE IF NOT EXISTS 语句,可直接在 MySQL/MariaDB 数据库中执行。
sleet pull
从现有 MySQL/MariaDB 数据库逆向工程生成 schema.lua 文件。
bash
sleet pull --db myserver
sleet pull --host 127.0.0.1 -u root -p s3cr3t --db myserver -o server/schema.lua
sleet pull --db myserver --stdout连接选项:
| 选项 | 简写 | 默认值 | 描述 |
|---|---|---|---|
--host | 127.0.0.1 | 数据库主机 | |
--port | 3306 | 数据库端口 | |
--user | -u | root | 数据库用户 |
--pass | -p | 数据库密码 | |
--db | -d | 数据库名称(必需) | |
--out | -o | schema.lua | 输出文件路径 |
--stdout | 输出到标准输出而非文件 |
使用示例
基本开发工作流
- 编写您的 Schema:
lua
-- server/schema.lua
local sl = Sleet
return {
players = sl.table('players', {
id = sl.serial().primaryKey(),
identifier = sl.varchar(64).notNull().unique(),
name = sl.varchar(255).notNull(),
money = sl.int().default(5000),
created_at = sl.timestamp().default(sl.sql('CURRENT_TIMESTAMP'))
})
}- 为数据库生成 SQL:
bash
sleet sql server/schema.lua -o database/init.sql- 生成类型注解:
bash
sleet generate server/schema.lua- 应用到数据库:
bash
mysql -u root -p gamemode < database/init.sqlIDE 集成
使用 sleet generate 生成类型后,LuaLS 会自动检测并加载生成的类型注解,用于自动完成和类型检查。
可选配置 (仅在没有 sleet 的工作区中需要):
VS Code (.vscode/settings.json):
json
{
"Lua.workspace.library": [".sleet"]
}LuaLS (.luarc.json):
json
{
"workspace": {
"library": [".sleet"]
}
}构建脚本集成
将 Sleet 命令添加到您的 npm 脚本:
json
{
"scripts": {
"schema:types": "sleet generate server/schema.lua",
"schema:sql": "sleet sql server/schema.lua -o database/schema.sql",
"schema:pull": "sleet pull --db gamemode -o server/schema-backup.lua"
}
}数据库迁移工作流
- 备份当前 Schema:
bash
sleet pull --db gamemode -o schema-backup.lua- 生成新的 SQL:
bash
sleet sql server/schema.lua -o migration.sql- 检查并应用:
bash
# 首先检查生成的 SQL
cat migration.sql
# 然后应用到数据库
mysql -u root -p gamemode < migration.sql获取帮助
bash
sleet --help # 常规帮助
sleet generate --help # generate 命令帮助
sleet sql --help # sql 命令帮助
sleet pull --help # pull 命令帮助项目结构
CLI 的组织结构如下:
cli/
├── cmd/ # Cobra 命令(root, generate, sql, pull)
├── internal/ # 核心逻辑、生成器、数据库连接
├── main.go # 入口点
├── go.mod # Go 模块定义
└── sleet.exe # Windows 二进制文件CLI 让您能够轻松维护类型安全的数据库 schema,并为您的 FiveM Lua 开发获得完整的 IDE 支持!
