8 个版本
0.1.9 | 2024 年 4 月 14 日 |
---|---|
0.1.8 | 2024 年 4 月 14 日 |
0.1.7 | 2023 年 12 月 27 日 |
#885 in 开发工具
374 每月下载量
51KB
1K SLoC
Fluorite
从 Yaml/JSON 指定的模式生成 rust/typescript 代码。
Fluorite 的 模式定义代码 由以下命令生成:
fluorite rust -i src/fluorite/definition.yaml -o ./src/definitions/
。
在 Cargo 项目中使用 fluorite
请查看 示例项目 以获取详细信息。首先添加以下依赖项:
[dependencies]
serde = "<serde-version>"
fluorite = "0.1"
derive-new = "0.6"
[build-dependencies]
fluorite_codegen = "0.1"
在 build.rs
中使用 fluorite
在 Cargo 构建过程中生成代码
fn main() {
let out_dir = std::env::var("OUT_DIR").unwrap();
fluorite::compile(&["fluorite/demo.yaml"], out_dir.as_str()).unwrap();
}
指示您的项目包含生成的代码,例如在库或主文件中
mod demo {
include!(concat!(env!("OUT_DIR"), "/demo/mod.rs"));
}
作为 CLI 使用 fluorite
$ fluorite --help
Generate rust/typescript codes from schemas specified by Yaml/JSON.
Usage: fluorite [OPTIONS] --output <OUTPUT>
Options:
-i, --inputs <INPUTS> Input definition files
-o, --output <OUTPUT> Output directory
-t, --target <TARGET> Target language [default: rust] [possible values: rust]
-h, --help Print help
-V, --version Print version
功能
- 支持 Yaml 模式定义,请参阅 此处示例
- 代码生成二进制程序
- 语言支持
- 在 Cargo
build.rs
脚本中使用 Rust 代码生成 - TypeScript 代码生成
- CodeGen API 以向
fluorite
添加更多语言支持
- 在 Cargo
- 支持 JSON 模式定义(无计划)
模式定义功能
更多详细信息请参阅 definitions.rs。
- 用户定义类型
- 对象
- 枚举
- ObjectEnum:支持序列化和反序列化时的多态类型
- 集合类型
- 列表
- 映射
- 原始类型
- 字符串
- 布尔值
- (WIP) 日期时间
- UIntX
- IntX
- Float
- 支持可选字段
- 支持任何类型字段
依赖关系
~2.9–4MB
~76K SLoC