一个跨平台序列化库,无需先解析或解包即可直接读取二进制数据。
gepheum/skir
一种声明式模式语言,可由同一份 .skir 文件生成 TypeScript、Python、Java、Go、C++ 等多语言的类型安全数据模型与 RPC 代码。
可替代:Protocol Buffers
- Star
- 316
- Fork
- 10
- 未关闭 Issue
- 1
- 最近提交
- 17天前
这是什么?
Skir 是一种用于定义数据类型和 API 的模式语言,所有定义都写在一个 .skir 文件中。命令行生成器会把它转换为 TypeScript、Python、Java、Go、C++、Rust、Kotlin、Swift 等多种语言的原生代码,让客户端和服务端共享同一份契约。
生成的类型是深度不可变的,所有字段在构造时必须赋值。项目支持带常量或带类型负载的和类型(sum type)、可按键查找的数组,以及紧凑 JSON、可读 JSON 和二进制三种序列化方式。模式演进时还会进行兼容性检查,确保旧数据仍可反序列化。
在服务端场景中,Skir 提供轻量的 HTTP RPC 框架 SkirRPC,并内置 Studio 应用用于浏览和测试方法。类型还可以直接从 GitHub 仓库导入,配套的 VS Code 扩展和语言服务器提供校验、补全和格式化功能。
核心功能
- 01用一份模式文件为 10 多种语言生成类型安全代码。
- 02生成深度不可变的类型,所有字段在构造时必填。
- 03支持带常量或带类型负载的和类型。
- 04提供紧凑 JSON、可读 JSON 和二进制三种序列化方式。
- 05内置 SkirRPC 及可测试方法的 Studio 应用。
- 06支持从 GitHub 仓库直接导入类型。
适用场景
- 在 TypeScript 前端与 Python 或 Go 后端之间共享请求和响应类型。
- 用支持和类型与键索引数组的模式语言替代 Protocol Buffers 定义。
- 构建需要 HTTP RPC 层和可视化测试界面的类型化 API。
- 通过 GitHub 导入在多个项目之间共享数据结构。
快速上手
- 1
打开入门指南,查看安装与工作流程
- 2
编写 .skir 模式文件,并为目标语言生成代码
使用前须知
- Elixir 代码生成器由社区维护,而非官方提供。
标签
常见问题
- skir 是什么?
- 一种声明式模式语言,可由同一份 .skir 文件生成 TypeScript、Python、Java、Go、C++ 等多语言的类型安全数据模型与 RPC 代码。 Skir 是一种用于定义数据类型和 API 的模式语言,所有定义都写在一个 .skir 文件中。命令行生成器会把它转换为 TypeScript、Python、Java、Go、C++、Rust、Kotlin、Swift 等多种语言的原生代码,让客户端和服务端共享同一份契约。
- skir 可以免费使用吗?用的什么许可证?
- skir 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- skir 还在维护吗?
- 活跃维护中。skir 最近一次提交是在 2026年10月6日。
- skir 适合用来做什么?
- 在 TypeScript 前端与 Python 或 Go 后端之间共享请求和响应类型。 用支持和类型与键索引数组的模式语言替代 Protocol Buffers 定义。 构建需要 HTTP RPC 层和可视化测试界面的类型化 API。 通过 GitHub 导入在多个项目之间共享数据结构。
- skir 怎么安装和运行?
- 打开入门指南,查看安装与工作流程 编写 .skir 模式文件,并为目标语言生成代码
- 在哪里获取 skir?
- 源代码和安装说明在 GitHub 上:https://github.com/gepheum/skir
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
跨语言的 RPC 框架,通过代码生成器为多种编程语言构建可互通的客户端与服务端。
无需 schema 或代码生成,即可在 TypeScript 中构建端到端类型安全的 API。
面向 gRPC 服务的命令行工具,类似 curl,使用 JSON 调用 RPC 方法。
无需编译器即可检查并自动修复 Protocol Buffer 风格问题的可插件化 linter。
使用 TypeScript 等语言构建小巧快速的跨平台桌面应用框架,内置更新与打包流程。