1.3.0 • Published 3 years ago
sv-builder v1.3.0
sv-builder
一款基于
swagger文档生成service层的工具
介绍
service-builder支持swagger1.x和2.x版本,使用时仅需要简单配置就可以生成基于路径的service,其支持自定义渲染模板,生成的结果是语言无关的(需要 prettier 支持)。
使用
基本方式
npm install sv-builder sv-builder-template --save-dev- 在项目根目录新建
.service-config.json文件,进行配置,一个简单的例子如下:
{
"originUrl": "http://apidoc.xx.com/gen/v2/api-docs", // 远程swagger文档地址
"sourcePath": "./service.json", // 本地swagger文档
"outDir": "./service", // service 输入目录
"templateClass": "TemplateClass.js", // 模板文件名
"ext": ".ts" // 输出文件扩展名
}- 在根目录新建模板文件
config.templateClass指定的同名文件,一个简易的写法可以是:
const Template = require('sv-builder-template')
class MyTemplate extends Template {
// 必须要实现的方法
getTemplateContent(doc) {
const [queryParams, bodyParams] = this.getTypeParams()
return `
import request from '@/utils/request'
type BodyParams = ${bodyParams}
interface QueryParams {
${this.getTypeQueryParams(queryParams)}
}
/**
* ${doc.summary}
*/
export function ${doc.fileName}(query: QueryParams, body: BodyParams) {
return request('${doc.url}', '${doc.method}', query, body)
}
`
}
}
module.exports = MyTemplate- 在文件根目录创建
.js文件,作为执行入口,
const service = require('sv-builder')
service.run()- 在
node(版本>=10.0.0)环境下执行入口文件,service(如果是 ts 的话还将生成相关的类型定义文件api.d.ts)将会生成到指定目录。
CLI(>=1.2.0 版本)推荐
yarn add --dev sv-builder安装builderyarn add --dev sv-builder-template安装模板文件- 在
package.json的scripts中添加以下代码
"scripts": {
...
"builder:init": "sv-builder -i", // 也可以是`sv-builder init`
"builder:generate": "sv-builder -g" // 也可以是`sv-builder generate`
},- 运行
yarn builder:init初始化,将生成.service-config.json和Template.js两个文件 - 按需修改
.service-config.json和Template.js - 运行
builder:generate生成service
Tips
- 在
originUrl和sourcePath同时配置的情况下,优先使用远程swagger文档。 - 自定义模板类一定要继承
Template类和实现getTemplateContent方法,否则无法生成 getTemplateContent(doc)中参数doc类型如下:
interface IDoc {
summary: string // 接口摘要/注释
method: string // 请求method类型
fileName: string // 文件名
dirName: string // 存放目录
url: string // 请求地址
params: parameters[] // 请求参数 见swagger文档 parameters
doc: any // 某一请求的原始swagger文档
}更新记录
1.1.0
- 增加对
ts的支持,现在可以生成相关的.d.ts文件,Template类提供了getTypeParams和getTypeQueryParams的方法用于生成参数定义
1.2.0
- 新增
CLI,用法见使用/CLI
1.2.2
- 支持了
url中 path 作为参数的情况,例如/api/retail/supplier/goods/group_price/spec_id/by_group_id/{groupId} - 针对
definition重复进行了去重,解决了.d.ts文件中出现defs.undefined的问题 - 解决了使用
prettier格式化ts报错,修复了函数名可能是保留字/关键字而格式化报错的问题