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); }