@lauginwing/openapi-gen
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

openapi-gen

根据 swagger 文档生成 api 代码及其类型

安装

yarn add @lauginwing/openapi-gen

使用

  • cli 使用
openapi-gen -c ./config.js
// -c : 设定配置文件所在地址,不传则默认取终端当前目录下的genapiconfig.js

// 本地使用
npx openapi-gen -c ./config.js
  • js 调用
import {gen} from '@lauginwing/openapi-gen'
import config from './genapiconfig.ts'

gen(config)

配置

一般情况下,只需配置前四项即可

例子

// config.js
const path = require('path')

module.exports = [
    {
        api: `https://petstore.swagger.io/v2/swagger.json`,
        sdkDir: path.join(__dirname, './src/api/pet'),
        namespace: 'Pet',
        prefix: '/pet',
    },
]

完整类型:

参考 https://github.com/zhang740/openapi-generator#readme

interface config {
    /** api文档地址 **/
    api: string
    /** 生成目录 */
    sdkDir: string
    /** 复杂类型命名空间 */
    namespace?: string
    /** 在每个请求的请求地址前加的前缀 */
    prefix?: string

    saveOpenAPIData?: boolean
    autoClear?: boolean
    /** 自动清除旧文件时忽略列表 */
    ignoreDelete?: string[]
    /** 参数类型的模板的地址 */
    paramInterfaceTemplatePath?: string
    /** Service模板文件路径 */
    templatePath?: string
    /** Interface模板文件路径 */
    interfaceTemplatePath?: string
    /** 生成请求库 */
    requestLib?: boolean
    /** filename style, true 为大驼峰,lower 为小驼峰 */
    camelCase?: boolean | 'lower'
    /** gen type */
    type?: 'ts' | 'js'
    /** 生成 Service 类型 */
    serviceType?: 'function' | 'class'
    /** 拿到 swagger json ,做前置处理,返回处理好的数据 **/
    beforeParseSwagger?: (data: SwaggerJSon | OpenApiJson) => Promise<SwaggerJSon | OpenApiJson>
    /** 数据处理钩子 */
    hook?: {
        /** 自定义函数名称 */
        customFunctionName?: (data: OperationObject) => string
        /** 自定义类名 */
        customClassName?: (tagName: string) => string
    }
    /** path过滤 */
    filter?: (RegExp | ((data: APIDataType) => boolean))[]
}

Readme

Keywords

none

Package Sidebar

Install

npm i @lauginwing/openapi-gen

Weekly Downloads

1

Version

0.0.4

License

MIT

Unpacked Size

32 kB

Total Files

11

Last publish

Collaborators

  • lauginwing