swagger-tscode-generate
v1.0.5
Published
Generate TS code when you open swagger docs
Maintainers
Readme
Generate typescript codes once user visit online swagger(2.x) docs.
Step1 Add settings in webpack or custom node server.
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,
}
}
]
Step2 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';
/**
* Delete Sample
*/
export const deleteSample = function(
{
id: number,
},
params?: {
sample?: object;
},
config?: { [key: string]: any }
): Promise<Response<string>> {
return http(`/sample/${id}`, {
method: 'GET',
params,
...config,
});
};
/**
* Get User Menu Permissions
*/
export const getMenu = function(config?: { [key: string]: any }): Promise<Response<Array<IMenuBo>>> {
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<Settings>.
SettingsParams attributes as below:
url:string, Swagger Online Json Docscodegen:CodeGenparams for code generation.prettyCmd:Optionalpretty code command executed after code generate finished.swaggerSavePath:Optionalfile path if you want to save original swagger difinitions content.
CodeGen attributes as below:
tsType:stringfolder for generated typescript type definitions.tsControler:stringfolder for generated typescript api codes.httpBase:stringPromise based HTTP client. for example:axios.responseWrapperPath:Optionalstring, custom response wrapper file pathresponseWrapperName:Optionalstring, exported name from custom response wrapper file pathtransformFileName:Optionalfunction, transform file name more friendly.onlyCreateTypes:Optionalboolean,
