swagger-typescript-api
swagger-typescript-api 是一个专为 TypeScript 设计的工具,支持从 Swagger/OpenAPI 文档生成 TypeScript 类型定义和 API 客户端代码,支持按 OpenAPI tags 自动分割生成多个文件。
工具说明
核心特性
- 按 tags 分割:支持
--module-first或modular: true,按 OpenAPI tags 组织文件 - 灵活配置:可以只生成类型,也可以生成 API 客户端代码
- 专为 TypeScript 设计:支持 Axios/Fetch,对前端开发友好
- 支持 Swagger 2.0:原生支持 Swagger 2.0,无需转换
适用场景
- 需要按 tags 分割生成多个文件
- 希望生成轻量级的类型定义和 API 封装
- 需要灵活的配置选项
安装
npm install -D swagger-typescript-api
使用方式
后端 Makefile 配置
FRONT_TYPES_DIR ?= ./frontend-types
generate-front-types-swagger-api: swagger ## 生成前端TypeScript类型定义(按tags分割,使用swagger-typescript-api)
@echo "generating frontend types to $(FRONT_TYPES_DIR) using swagger-typescript-api..."
@mkdir -p $(FRONT_TYPES_DIR)
@rm -rf $(FRONT_TYPES_DIR)/* 2>/dev/null || true
docker run --rm \
-v $(PWD)/docs/swagger.yaml:/swagger.yaml:ro \
-v $(PWD)/$(FRONT_TYPES_DIR):/output \
node:20-alpine sh -c "\
npm install -g swagger-typescript-api && \
swagger-typescript-api generate \
--path /swagger.yaml \
--output /output \
--modular \
--module-name-first-tag"
@echo "Frontend types generated to $(FRONT_TYPES_DIR) (split by tags)"
@echo "Note: API files are split by tags, but data-contracts.ts contains all types"
关键配置说明:
node:20-alpine:需要 Node.js 20+ 版本(工具依赖需要)generate:必须指定generate命令--modular:启用模块化输出--module-name-first-tag:按第一个 tag 分割生成多个 API 文件- 注意:使用
--no-client时不会按 tags 分割,只生成单个data-contracts.ts文件