@archastro/sdk-generator

中文文档
0.11.17发布于 2026/11/04MITTypeScriptES Module构建来源已验证近 30 天下载 7.9万

从 OpenAPI 光谱中生成打入的 TypeScript, Python, Swift, Go, Elixir, 和 Rust SDKs(+合同测试).

中文使用文档
文档目录8 节
  1. 安装
  2. 国 际
  3. 去目标配置
  4. 生成的 SDK 文档
  5. --config
  6. TypeScript 客户端扩展
  7. 程序使用
  8. 发展

@ archastro/ sdk- 生成器

生成已键入的 TypeScript, Python, Swift, Go, Elixir, 和 Rust SDKs —— 加上跨语言 合同测试——取自ArchAstro API DSL生产的OpenAPI光谱.

安装

# ad-hoc
npx @archastro/sdk-generator --spec ./openapi.json --lang typescript --out ./sdk

# global
npm install -g @archastro/sdk-generator
sdk-generator --spec ./openapi.json --lang python --out ./sdk

国 际

sdk-generator --spec <openapi.json> \
                  [--lang typescript|python|swift|go|elixir|rust|contract-tests-ts|contract-tests-py|contract-tests-swift|contract-tests-go|contract-tests-elixir|contract-tests-rust] \
                  [--out <dir>] \
                  [--config <config.json>] \
                  [--ast-only]

目标:

--lang输出
typescriptTS SDK: 资源, 频道类, 认证, 客户端, Zod 计划
pythonPython SDK: Pydantic 模型,资源,频道
swiftSWift SDK:可编码模型,资源,频道,同源客户端
goGo SDK: JSON 标记的构造,上下文资源,频道,客户端
elixirElixir SDK:结构、资源模块、认证和凤凰频道外观
rustRust SDK: serde 模型, async/ blocking 资源, 键入 SSE, 认证和信道外观
contract-tests-ts驱动的TS合同测试 @archastro/channel-harness
contract-tests-pyPython 合同测试( pytest + Prism 模拟服务器)
contract-tests-swift快速合同测试(swift-testing + Prism + habel)
contract-tests-go合同测试(go test +棱镜+取用)
contract-tests-elixirElixir合同测试(Ex Unit + Prism + 牵引)
contract-tests-rustRust 整合合同(cargo test +棱镜+取用)

去目标配置

去解析类型 财务报告和审定财务报表 从一个软件包级命名空间的函数,及其 每个目录编译一个软件包,所以 Go后端需要软件包名称 和导入路径呼叫者到达它。 两者都生活在配置文件下面 go数字 :

{
  "go": {
    "packageName": "platform",
    "importPath": "github.com/ArchAstro/archastro-go/platform"
  }
}

SDK平地着陆 <out>/<packageName>/ (单位:千美元)types_*.go, (中文(简体) ), v1_*.go, (中文(简体) ), channels_*.go, (中文(简体) ), client.go, (中文(简体) ), auth.go合同测试 <out>/contracttests/,通过这条路径导入 SDK 。 发射器 写入结构正确 Go, 而不是列对齐 Go —— 运行 gofmt -w 结束 输出作为再生的一部分.

生成的 SDK 文档

生成器将 OpenAPI 文档保存为平面源文件 语言。 使用标准 OpenAPI 字段作为真理的来源 :

  • 运行 summary 财务报告和审定财务报表 description 成为 TypeScript JSDoc, Python 方法剂量弦,和斯威夫特/去 // 文件评论.
  • 参数和请求体字段 description 值成为参数 和输入对象字段文件.
  • 成功响应描述成为了返回值文件.
  • 司马 description 值变为 TypeScript 接口/schema docs 并 Python模型多克弦.
  • Schema 属性 description 值变为 TypeScript 字段 Docs, Zod .describe(...) 元数据,和 Pydantic Field(description=...) 元数据.

对于消耗 SDK repos , 将 Docs 生成保留在生成的软件包旁边 :

  • 类型脚本:添加类型Doc, 点 entryPoints 在公众生成的条目 点,并公布生成的 docs/ 有 GitHub 页面的目录.
  • Python: 添加 pdoc, 将其指向生成的软件包, 并发布渲染的 带有 GitHub Pages 的 HTML .
  • 在 SDK 重生失败后运行 CI 中的文件构建 在释放前.

--config

两个后端所消耗的共享编码元数据 :

{
  "name": "@archastro/platform-sdk",
  "version": "0.1.0",
  "baseUrl": "https://platform.archastro.ai",
  "apiBase": "/api",
  "defaultVersion": "v1",
  "description": "ArchAstro Platform API SDK"
}

TypeScript 客户端扩展

已生成 PlatformClient 类 显示类型 类表达式混合接合 :

const RealtimePlatformClient = PlatformClient.extend(
  withCustomObjectSubscriptions,
);
const client = RealtimePlatformClient.withToken("pk_live_...", accessToken);

extend 返回子类而不是修改 PlatformClient扩展 因此,保留所生成的资源,可以连锁,并由 制造出静态工厂。 手持扩展使用标准 TypeScript 混入形状 :

const withDiagnostics = <TBase extends PlatformClientConstructor>(Base: TBase) =>
  class extends Base {
    diagnosticLabel() {
      return "ready";
    }
  };

消费SDK可以使这些模块在整个再生过程中保持公开,而无需 向发电机传授方法:

{
  "typescript": {
    "clientExtensionModules": ["./custom-object-subscriptions.js"]
  }
}

每个已配置的模块作为 export * 生成的条目 包装桶。 模块本身仍然手持.

程序使用

import {
  parseOpenApiSpec,
  generateTypeScript,
  generatePython,
  generateContractTests,
} from "@archastro/sdk-generator";

const spec = JSON.parse(readFileSync("openapi.json", "utf-8"));
const ast = parseOpenApiSpec(spec, { name: "@archastro/platform-sdk" });
const files = generateTypeScript(ast, { outDir: "./sdk" });

发展

这个包裹住在 archastro-openapi 工作空间。 见根 README 构建 / 测试 / 发布指令 .

版本与发布记录

@archastro/sdk-generator 共发布 42 个版本,首次发布于 2026/04/18;过去 12 个月发布了 42 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.11.17latest2026/11/043 天前
0.11.162026/11/016 天前
0.11.152026/11/016 天前
0.11.142026/10/2216 天前
0.11.132026/10/2216 天前
0.11.122026/10/2216 天前

关于 @archastro/sdk-generator 的常见问题

@archastro/sdk-generator 是什么?

从 OpenAPI 光谱中生成打入的 TypeScript, Python, Swift, Go, Elixir, 和 Rust SDKs(+合同测试).

如何安装 @archastro/sdk-generator?

在项目目录运行 npm install @archastro/sdk-generator,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 sdk-generator,可以用 npx sdk-generator 直接运行。

@archastro/sdk-generator 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@archastro/sdk-generator 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@archastro/sdk-generator 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@archastro/sdk-generator 可以商用吗?

@archastro/sdk-generator 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@archastro/sdk-generator 的下载量有多少?

根据 npm 官方下载统计,@archastro/sdk-generator 在 2026/10/07 – 2026/11/05 这 30 天内被下载 78,984 次,日均约 2,633 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@archastro/sdk-generator 还在维护吗?

最新版本 0.11.17 发布于 2026/11/04(3 天前);至今共发布 42 个版本,其中过去 12 个月发布了 42 个;首次发布于 2026/04/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。