1.4.8 • Published 5 months ago

anl v1.4.8

Weekly downloads
-
License
ISC
Repository
github
Last release
5 months ago

an-cli

前端命令行工具

一个基于 Swagger JSON 自动生成 TypeScript 类型定义和 API 请求函数的命令行工具。

功能特点

  • 🚀 自动解析 Swagger JSON 文档
  • 📦 生成 TypeScript 类型定义文件
  • 🔄 生成类型安全的 API 请求函数
  • 🎯 支持路径参数、查询参数和请求体
  • 📝 自动生成枚举类型定义
  • 🎨 支持代码格式化
  • ⚡️ 支持文件上传
  • 🛠 可配置的代码生成选项

安装

$ npm install anl -g

$ yarn global add anl

使用方法

$ anl type
  • 如果初次使用会在项目根目录下创建如下配置文件(手动创建也可以),具体参数说明后面会有详细介绍
  1. 项目根目录创建配置文件 an.config.json
{
	"saveTypeFolderPath": "apps/types",
	"saveApiListFolderPath": "apps/api/",
	"saveEnumFolderPath": "apps/enums",
	"importEnumPath": "../../enums",
	"swaggerJsonUrl": "http://your-swagger-api-url/swagger.json",
	"requestMethodsImportPath": "./fetch",
	"dataLevel": "serve",
	"formatting": {
		"indentation": "\t",
		"lineEnding": "\n"
	},
	"headers": {}
}
  1. 运行命令生成类型文件:
anl generate

配置项说明

配置项类型必填说明
saveTypeFolderPathstring类型定义文件保存路径
saveApiListFolderPathstringAPI 请求函数文件保存路径
saveEnumFolderPathstring枚举类型文件保存路径
importEnumPathstring枚举类型导入路径
swaggerJsonUrlstringSwagger JSON 文档地址
requestMethodsImportPathstring请求方法导入路径
dataLevel'data' | 'serve' | 'axios'接口返回数据层级
formattingobject代码格式化配置
headersobject请求头配置

生成的文件结构

  • 这个文件结构是根据配置文件生成的
project/
├── apps/
│   ├── types/
│   │   ├── models/           # 所有类型定义文件(不包含枚举类型)
│   │   ├── connectors/      # API 类型定义(接口定义文件)
│   │   └── enums/           # 枚举类型定义
│   └── api/
│       ├── fetch.ts         # 请求方法实现
│       └── index.ts         # API 请求函数

生成的代码示例

类型定义文件

declare namespace UserDetail_GET {
	interface Query {
		userId: string;
	}

	interface Response {
		id: string;
		name: string;
		age: number;
		role: UserRole;
	}
}

API 请求函数

import { GET } from './fetch';

/**
 * 获取用户详情
 */
export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);

特性说明

类型解析

  • 支持所有 OpenAPI 3.0 规范的数据类型
  • 自动处理复杂的嵌套类型
  • 支持数组、对象、枚举等类型
  • 自动生成接口注释

文件上传

当检测到文件上传类型时,会自动添加对应的请求头:

export const uploadFile = (params: UploadFile.Body) =>
	POST<UploadFile.Response>('/upload', params, {
		headers: { 'Content-Type': 'multipart/form-data' },
	});

错误处理

工具内置了完善的错误处理机制:

  • 解析错误提示
  • 类型生成失败警告
  • 文件写入异常处理

开发

# 安装依赖
npm install

# 开发模式
按 F5 进行调试

# 构建
npm run build

# 本地链接调试
npm run blink

注意事项

  1. 确保 Swagger JSON 文档地址可访问
  2. 配置文件中的路径需要是相对于项目根目录的路径
  3. 生成的文件会覆盖已存在的同名文件
  4. 建议将生成的文件加入版本控制

常见问题

  1. 生成的类型文件格式化失败

    • 检查是否安装了 prettier
    • 确认项目根目录下是否有 prettier 配置文件
  2. 请求函数导入路径错误

    • 检查 requestMethodsImportPath 配置是否正确
    • 确认请求方法文件是否存在

贡献指南

欢迎提交 Issue 和 Pull Request!

许可证

ISC License

1.4.6

5 months ago

1.4.5

6 months ago

1.4.4

6 months ago

1.4.8

5 months ago

1.4.7

5 months ago

1.4.3

6 months ago

1.4.2

6 months ago

1.4.1

6 months ago

1.3.33

6 months ago

1.3.34

6 months ago

1.3.28

6 months ago

1.3.29

6 months ago

1.3.26

6 months ago

1.3.27

6 months ago

1.3.31

6 months ago

1.3.32

6 months ago

1.3.30

6 months ago

1.3.25

6 months ago

1.3.23

8 months ago

1.3.21

9 months ago

1.3.19

9 months ago

1.3.20

9 months ago

1.3.17

10 months ago

1.3.18

10 months ago

1.3.16

11 months ago

1.3.15

1 year ago

1.3.13

1 year ago

1.3.14

1 year ago

1.3.12

1 year ago

1.3.7

1 year ago

1.3.6

1 year ago

1.3.5

1 year ago

1.3.4

1 year ago

1.3.3

1 year ago

1.3.2

1 year ago

1.3.1

1 year ago

1.3.0

1 year ago

1.3.11

1 year ago

1.3.9

1 year ago

1.3.8

1 year ago

1.2.6

1 year ago

1.2.5

1 year ago

1.2.3

1 year ago

1.2.2

1 year ago

1.2.1

1 year ago

1.2.0

2 years ago

1.1.1

3 years ago

1.0.2

3 years ago

1.1.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

1.1.4

2 years ago

1.1.3

3 years ago

1.0.4

3 years ago

1.1.2

3 years ago

1.0.3

3 years ago

0.0.1

5 years ago