swaggergenerateapi
Version:
73 lines (69 loc) • 1.82 kB
text/typescript
import build from './build';
import { NswagOptions, Propertie } from './types';
import { camelCase } from 'lodash-es';
/**
* 设置默认参数
* @param options 外部参数
*/
function defNswagOptions(options: NswagOptions) {
/**
* 格式化模块名称(默认:接口名称+Api)
* @param name 名称
*/
function formatControllerName(name: string) {
return name.indexOf('Api') !== -1 ? name : name + 'Api';
}
/**
* 格式化接口名称(默认:小驼峰命名)
* @param name 名称
*/
function formatMethodName(name: string) {
if (name === '/' || name === '') {
return '';
}
const fnName = name.substring(name.lastIndexOf('/'));
return camelCase(fnName);
}
/**
* 格式化dto对象、枚举名称(默认:只会去除特殊字符)
* @param name 名称
*/
function formatModelName(name: string) {
return name.replace(/[.,\[\]]/g, '');
}
const def: NswagOptions = {
SwaggerUrl: '',
ApiBase: '',
OutPath: '',
TplPath: '',
UseAxios: false,
FormatControllerName: formatControllerName,
FormatMethodName: formatMethodName,
FormatModelName: formatModelName,
};
return Object.assign(def, options);
}
/**
* 初始化
*/
export default async function init(configs: NswagOptions [] = []) {
// 生成接口
let i = 0;
while (i < configs.length) {
const config = configs[i];
if (!config.SwaggerUrl) {
console.log('接口地址[SwaggerUrl]不能为空');
return;
}
if (!config.ApiBase) {
console.log('接口根目录[ApiBase]不能为空');
return;
}
console.log(`开始生成 ${new Date().toLocaleString()}`);
console.time('Generation time');
await build(defNswagOptions(config));
console.timeEnd('Generation time');
i++;
}
process.exit(0);
}