openapi-typescript-codegen
@hey-api/openapi-ts 是 openapi-typescript-codegen 的活跃维护分支,支持从 OpenAPI/Swagger 文档生成 TypeScript 类型定义和 API 客户端代码
工具说明
与 openapi-typescript-codegen 的关系
openapi-typescript-codegen 项目已不再维护,官方建议迁移到 @hey-api/openapi-ts,这是原项目的活跃分支,修复了原项目的问题并持续更新。
核心特性
- 灵活配置:可以只生成类型,也可以生成服务代码
- 类型安全:完整的 TypeScript 类型定义
- 支持 Swagger 2.0:通过
swagger2openapi转换后支持
限制说明
- 不支持按 tags 分割:
@hey-api/openapi-ts不支持按 OpenAPI tags 自动分割生成多个文件,所有类型定义会生成在单个文件中(types.gen.ts) - 如需按 tags 分割:可以考虑使用
openapi-generator-cli,它支持按 schema 分割生成多个文件(models/目录)
安装
建议在docker容器中运行,避免本地环境依赖复杂
npm install -D @hey-api/openapi-ts
使用方式
后端 Makefile 配置
FRONT_TYPES_DIR ?= ./frontend-types
generate-front-types: swagger ## 生成前端TypeScript类型定义(多文件)
@echo "generating frontend types to $(FRONT_TYPES_DIR)..."
@mkdir -p $(FRONT_TYPES_DIR)
docker run --rm \
-v $(PWD)/docs/swagger.yaml:/swagger.yaml:ro \
-v $(PWD)/$(FRONT_TYPES_DIR):/output \
node:18-alpine sh -c "\
npm install -g swagger2openapi @hey-api/openapi-ts && \
swagger2openapi /swagger.yaml -o /output/openapi3.yaml && \
openapi-ts --input /output/openapi3.yaml --output /output --types --schemas"
@echo "Frontend types generated to $(FRONT_TYPES_DIR)"