pont拉取代码
第一步,配置原始pont-config.json,自动生成pontTemplate.ts文件
第二步,复制pontTemplate.ts中内容,新建自定义文件,粘贴进去代码
import {Interface,BaseClass,Property,CodeGenerator,Surrounding,
} from 'pont-engine';export default class MyGenerator extends CodeGenerator {getInterfaceContentInDeclaration(inter: Interface) {const requestParams = inter.getRequestParams();const paramsCode = inter.getParamsCode('Params');return `export ${paramsCode}export type Response = ${inter.responseType}export const init: Response;export function request(${requestParams}): Promise<Response>;`;}getBaseClassInDeclaration(base: BaseClass) {const originProps = base.properties;base.properties = base.properties.map((prop) => {return new Property({...prop,required: false,});});const result = super.getBaseClassInDeclaration(base);base.properties = originProps;return result;}getInterfaceContent(inter: Interface) {const method = inter.method.toUpperCase();const requestParams = inter.getRequestParams(this.surrounding);const paramsCode = inter.getParamsCode('Params', this.surrounding);const paramsArgs: Property[] = [];if (method === 'POST' || method === 'PUT') {// 纯请求参数const queryArgs: Property[] = paramsArgs.filter((p) => p.in === 'query');if (queryArgs.length > 0) {return `import http from '@/lib/http'import { toURL } from '@/lib/util'/*** ${inter.description}* @param {Object} formData* @param {import('axios').AxiosRequestConfig} config axios 可选配置* @return {Promise<*>}*/export function request(data, config) {data = data || {}const url = toURL("${inter.path}", data)return http.request({ url, method: '${method}', data, ...config });}`;} else {return `import http from '@/lib/http'import { toURL } from '@/lib/util'/*** ${inter.description}* @param {Object} data* @param {import('axios').AxiosRequestConfig} config axios 可选配置* @return {Promise<*>}*/export function request(data, config) {data = data || {}const url = toURL("${inter.path}", data)return http.request({ url, method: '${method}', data, ...config });}`;}}return `import http from '@/lib/http'import { toURL } from '@/lib/util'/*** ${inter.description}** @param {Object} params${paramsArgs.map((p) => ` * @param {string} params.${p.name} ${p.description || ''}`).join('\n')}* @param {import('axios').AxiosRequestConfig} config axios 可选配置** @return {Promise<*>}*/export function request(params, config) {params = params || {}const url = toURL("/mediinfo-lyra-menhu${inter.path}", params)return http.request({ url,method: '${method}', params, ...config });}`;}
}
第三步,替换pont-config.json中的templatePath路径为新建的文件路径,templateType设置为fetch
第四步,使用VScodepont工具生成代码