@nicecode/mofish
TypeScript icon, indicating that this package has built-in type declarations

3.38.0 • Public • Published

接口代码自动生成

mofish 是一个代码生成工具,其可根据 YApiSwagger 的接口定义生成 TypeScript 或 JavaScript 的接口类型及其请求函数代码。

特性

  • 支持多服务器、多项目、多分类
  • 支持预处理接口信息
  • 可自定义类型或函数名称
  • 完整的注释
  • 支持生成 React Hooks 的请求代码
  • 支持参数路径
  • 支持上传文件
  • 支持生成 JavaScript 代码
  • 支持 Swagger

环境要求

首先得有 Node.js,并确保其版本 >= 10.19.0。同时:

  • 对于基于 YApi 的项目,要求 YApi 的版本必须 >= 1.5.12
  • 对于基于 Swagger 的项目,仅支持 Swagger 2OpenAPI 3

安装

选择你常用的包管理器将 @nicecode/mofish 加入项目依赖即可:

# npm
npm i @nicecode/mofish

# yarn
yarn add @nicecode/mofish

# pnpm
pnpm add @nicecode/mofish

使用

注意在swagger模式下无法分离api文件和按需引入接口,每个项目都在一个接口文件中,yapi模式可以通过 ID 筛选分类

生成配置文件

npx mofish init
// mofish.config.ts
import { defineConfig } from '@nicecode/mofish'

export default defineConfig([
  {
    serverUrl: 'http://localhost:3000', // 接口服务地址,支持swagger
    typesOnly: false,
    target: 'typescript',
    reactHooks: {
      enabled: false,
    },
    devEnvName: 'dev',
    prodEnvName: 'prod',
    outputFilePath: interfaceInfo => `api/${interfaceInfo._category.name}.ts`,   // 接口输出文件路径
    requestFunctionFilePath: 'utils/request.ts',   // 请求函数路径
    dataKey: 'data',
    comment: {
      category: false,
      tag: false,
      requestHeader: false
    },
    projects: [ // 项目列表,对应单个项目swagger文档链接
      {
        token: 'ce517e50453e14f9b00039538235720a23337590f107455eaa6fb65a6bda7f22',  // yapi token,在对应项目中获取,swagger模式下可不传
        categories: [
          {
            id: [272, 308, 425],   // 接口分类id,对应yapi链接:/api/cat_${id}  0为全部
            getRequestFunctionName(interfaceInfo, changeCase) {
              // 以接口全路径生成请求函数名
              return changeCase.camelCase(interfaceInfo.path)
            },
          },
        ],
      },
    ],
  },
])

生成代码

使用以下命令生成代码:

npx mofish

如果要使用自定义的配置文件:

npx mofish -c config/mofish.ts

Readme

Keywords

Package Sidebar

Install

npm i @nicecode/mofish

Weekly Downloads

0

Version

3.38.0

License

MIT

Unpacked Size

6.54 kB

Total Files

3

Last publish

Collaborators

  • jzxer