项目结构

以 Markdown 格式查看

在使用 Fern 生成 SDK 之前,需要设置正确的 GitHub 仓库结构来存放您的 API 定义和 SDK 代码,这样您和您的用户可以直观地访问、维护和更新代码。

仓库架构

Fern 建议使用多仓库结构,包含:

  • 源仓库:包含您的 API 定义和 SDK 生成配置
  • SDK 仓库:每个 SDK 一个仓库(TypeScript、Python、Go 等)
company-repo# 源仓库
.github
workflows# 所有 SDK 的发布工作流
fern
fern.config.json# 根级配置
generators.yml# 引用 SDK 仓库
definition
typescript-sdk-repo# SDK 仓库
python-sdk-repo# SDK 仓库
go-sdk-repo# SDK 仓库

这种分离方式允许您集中管理 API 定义,同时将每个 SDK 保持在自己的仓库中,实现独立的版本管理和分发。

示例

查看 Cohere 的 fern 文件夹 以及 TypeScriptPython SDK 仓库。

核心配置文件

源仓库包含一个 fern/ 文件夹,其中初始化了您的 API 定义和顶级 generators.yml 文件。

fern.config.json

fern.config.json 文件存储您的组织名称和 Fern CLI 版本。固定版本提供确定性构建。

fern.config.json
1{
2 "organization": "plant-catalog",
3 "version": "5.23.3"
4}

当使用本地安装的 CLI 时,将 version 设置为 "*"。详见本地安装 Fern CLI

generators.yml

generators.yml 文件在 api.specs 部分声明您的 API 规范位置,并在 groups 部分配置 SDK 生成。

generators.yml
1# API 声明
2api:
3 specs:
4 - openapi: ./openapi/openapi.yml
5
6# SDK 生成
7groups:
8 ts-sdk:
9 generators:
10 - name: fern-typescript-sdk
11 version: 3.72.5
12 github:
13 repository: your-organization/typescript-sdk-repo
14
15 python-sdk:
16 generators:
17 - name: fern-python-sdk
18 version: 5.14.19
19 github:
20 repository: your-organization/python-sdk-repo
示例

查看 Cohere 的 generators.yml 文件 和 Vapi 的 generators.yml 文件

完整的配置选项请参阅 generators.yml 参考页

API 定义文件

有关组织 API 定义文件和处理多个 API 的详细信息,请参阅项目结构(API 定义)