Generate typescript codes once user visit online swagger(2.x) docs.
最近新写了一个工具,根据swagger 自动生成service 和types 文件,提高coding 效率
(可以自定义配置只生成 types 文件)
swagger-tscode-generate support swagger json url or swagger json file ;
// ts-code-gen.js
const settingParams = [
{
// swagger json data or url
// swagger:swaggerJson,
url:'https://petstore.swagger.io/v2/swagger.json',
codegen:{
// generated Folders
tsType:'src/codegen/types',
tsControler: 'src/codegen/service',
// Custom Request Tool
httpbase:'~/utils/fetch',
// rename file name more friendly
// Sample --> SampleController
getAPIFileName: function transformFileName(name){
return name.indexOf('API')? `${name.replace(/[ ]/g,'')}Controller`:name;
},
// is only Create types file
onlyCreateTypes:true,
}
}
]
Step3 Visit Swagger online Docs
- set setting url https://petstore.swagger.io/v2/swagger.json
- node ts-code-gen
3.2. View codes generated in folder src/codegen/service
my-app
├── config-override.js
├── node_modules
├── public
│ ├ index.html
│ └── favicon.ico
├── utils
│ └── fetch.ts
└── src
├── pages
├── components
└── codegen
└── service
├── commonType.ts
└── business
├── ts
│ └── SampleController.ts
└── types
└── IMenuBo.ts
// src/codegen/service/business/ts/SampleController.ts
import { Response } from '../commonType';
import { IMenuBo } from '../types/IMenuBo';
import http from '~/utils/fetch';
export const deleteSample = function(
{
id: number,
},
params?: {
sample?: object;
},
config?: { [key: string]: any }
): Promise> {
return http(`/sample/${id}`, {
method: 'GET',
params,
...config,
});
};
export const getMenu = function(config?: { [key: string]: any }): Promise>> {
return http(`/menus`, {
method: 'GET',
...config,
});
};
// src/codegen/service/business/types/IMenuBo.ts
export interface IMenuBo {
code?: string;
title?: string;
name?: string;
}
Options
options is type of Array
SettingsParams attributes as below:
-
url: string, Swagger online Json Docs
-
codegen: CodeGen params for code generation.
-
prettyCmd: Optional pretty code command executed after code generate finished.
-
swaggerSavePath: Optional file path if you want to save original swagger difinitions content.
CodeGen attributes as below:
-
tsType: string folder for generated typescript type definitions.
-
tsControler: string folder for generated typescript api codes.
-
httpbase: string Promise based HTTP client. for example: axios.
-
responseWrapperPath: Optional string, custom response wrapper file path
-
responseWrapperName: Optional string, exported name from custom response wrapper file path
-
transformFileName: Optional function, transform file name more friendly.
-
onlyCreateTypes: Optional boolean ,



