Skip to content

@wenext/api-generator

一个基于 swagger-typescript-api 的 API 类型及请求代码生成工具。支持多配置文件、Hooks 拦截、路径过滤等功能,旨在简化前端接口类型的维护工作。

主要功能

  • 多配置支持: 支持在一个配置文件中定义多个 Swagger 接口来源。
  • 类型自动生成: 自动生成 TypeScript 接口类型定义。
  • Hooks 拦截: 提供 onCreateRoute 等 Hooks,支持对生成的路径进行过滤或修改。
  • CLI 支持: 通过命令行工具快速触发生成流程。

安装指南

在您的项目中安装此包:

bash
pnpm add @wenext/api-generator -D

使用方式

1. 创建配置文件

在项目的根目录下新建 api-config.js 文件。

javascript
import path from "path";
import { defineApiGenerationConfig } from "@wenext/api-generator";

// 定义生成代码的输出路径
const genPath = path.resolve(process.cwd(), "./src/genApi");

const UserApiConfig = {
  name: "user-api.ts",
  output: genPath,
  url: "http://43.132.129.76/user/swagger/v2/api-docs",
  apiClassName: "UserApi",
  hooks: {
    /**
     * 路由创建时的钩子
     * @param route 路由对象
     * @returns 返回 route 对象则保留,返回 false 则过滤掉
     */
    onCreateRoute(route) {
      const includesApiPath = [
        '/user/getUserSVipInfo',
        '/user/getSVIPConfig',
        '/user/updateUserSVipConfig',
        '/user/getUserInfoByUid/{uid}',
      ];
      // 仅生成指定的接口
      return includesApiPath.includes(route.raw.route) ? route : false;
    }
  },
};

export default defineApiGenerationConfig(() => {
  return {
    configs: [UserApiConfig],
  };
});

2. 配置脚本

在项目的 package.json 中添加生成命令:

json
{
  "scripts": {
    "gen-api": "api-generator -c api-config.js"
  }
}

3. 执行生成

bash
pnpm gen-api

配置项说明

Config 对象属性

属性类型描述
namestring生成的文件名称(如 user-api.ts
outputstring生成文件的输出目录路径
urlstringSwagger JSON 接口地址
apiClassNamestring生成的 API 类名
hooksobject包含 onCreateRoute 等钩子函数

Hooks 说明

  • onCreateRoute(route): 在解析每个接口路径时触发。可以通过返回 false 来跳过某些不需要生成类型的接口。