What
swagger2ts-gen-cli 是一个基于 Nodejs + Rollup + TypeScript 等技术开发,可根据后端服务的 swagger-api 自动化生成客户端代码的 Cli 工具。
Why
在
这个背景 ♨️下产生了编写自动化生成工具的想法
Requirements
- Node version (v16.0.0+)
- 外网环境支持
How
1. 使用
npm 或
pnpm 安装
npm install swagger2ts-gen-cli -D
pnpm add swagger2ts-gen-cli -D
2. 安装完毕后直接在命令行输入
swagger2ts-gen-cli 或
sg-cli 可查看命令,如果执行失败可添加
npx 前缀试试
``
cmd
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
gen [options] 根据后端服务的 swagger-api 生成客户端代码
help [command] display help for command
`
3. npx swagger2ts-gen-cli gen -h
查看 gen
命令需要的参数
`
cmd
跟据后端服务的 swagger-api 生成客户端代码
Options:
-url, --url swagger-config 或 swagger-resources 或 api-docs 的路径, 例如: http://xxx.xxx.xxx.xxx:xxxx/v3/api-docs/swagger-config 或 http://xxx.xxx.xxx.xxx:xxxx/swagger-resources 或 http://xxx.xxx.xxx.xxx:xxxx/api/auth/v3/api-docs'
-c, --convert 是否需要转换为 openApi3.0 标准 (default: false)
-ct, --client_type [client_type] 要生成的客户端代码文件类型 (default: "typescript-axios")
-o, --output_path [output_path] 生成客户端代码文件后存放的位置 (default: "./swagger2ts-generated")
-clean, --clean 是否清理解压后的无效文件 (default: false)
-h, --help display help for command
`
其中 --client_type
支持的参数有如下
- Swagger 2
!openapi-v2-client
- OpenAPI 3
!openapi-v3-client
$3
1. 💡 直接将 Swagger 2 标准的 API 生成相应客户端类型的文件
`
cmd
sg-cli gen -url http://172.18.10.58:30042/swagger-resources -ct typescript-fetch -o ./swagger2ts-generated/v2 -clean
`
2. 💡 直接将 OpenAPI 3 标准的 API 生成相应客户端类型的文件
`
cmd
sg-cli gen -url http://172.18.10.28:30060/v3/api-docs/swagger-config -ct typescript-axios -o ./swagger2ts-generated/v3 -clean
`
3. 💡 将 Swagger 2 先转换成 OpenAPI 3 标准 API,再生成相应客户端类型的文件
`
cmd
sg-cli gen -url http://172.18.10.58:30042/swagger-resources -c -ct typescript-axios -o ./swagger2ts-generated/v2to3 -clean
``
问题交流
⚡️ 可以扫描下方微信公众号私信我
!
微信公众号
🌟 如果你也喜欢这个项目,请给我一个 star。你的鼓励就是我最大的动力!
依赖库介绍
$3
> commander 是一个用于解析命令行参数和生成命令行界面的 Node.js 库。它提供了一组强大的 API,可以轻松创建 CLI 工具、自动化脚本、服务器端应用程序等各种类型的 Node.js 程序。该库支持定义参数、选项和子命令,并在程序运行时轻松解析这些内容。它还提供了参数验证、帮助信息生成、命令行提示符等功能,是 Node.js 社区中最流行的命令行开发库之一。
$3
> ora 是一个用于 Node.js 的命令行加载指示器库。在执行长时间的任务或等待 IO 操作完成时,这个库可以在终端上显示一个动态的加载指示器,让用户知道程序正在运行,并且不会误以为程序已经挂起了。ora 库支持自定义加载指示器的样式和颜色,可以根据需要创建旋转、箭头、进度条和等待图标等多种样式。此外,该库还支持 promise 和 async/await 的方式调用,使得编写异步代码更加方便。通过简单易用的 API,ora 库已经成为 Node.js 社区中最受欢迎的命令行加载指示器库之一,被广泛应用于各种类型的 CLI 工具、自动化脚本和其他 Node.js 应用程序中。
$3
> fs-extra 是一个对 Node.js 原生文件系统模块(fs)进行扩展和增强的 Node.js 库。它提供了更多的功能和操作,如删除目录、拷贝文件、读取 json 文件、文件重命名等等。相对于原生的 fs 模块,fs-extra 库对使用者的友好度更高,封装了常用的操作,易于理解和使用。
$3
> rimraf 是一个用于 Node.js 的文件删除工具。它提供了一个强大的 API,可以递归地删除整个目录树和其中的所有文件。它也支持 Windows 平台上的路径,可以在不同的操作系统环境下工作。相对于原生的 fs 模块,它提供了更高层次的封装,使用起来更加方便,并且在处理较大的目录时效率更高。
$3
> js-yaml 是一个 JavaScript 库,用于解析和序列化 YAML("YAML Ain't Markup Language")格式的数据。它支持 YAML 1.2 规范,并且可以在浏览器端和服务器端运行。通过使用 js-yaml,开发者可以方便地将 YAML 格式的文本转换为 JavaScript 对象,以便于在程序中进行操作。它还可以将 JavaScript 对象转换为 YAML 格式的文本,以便于将数据存储到文件或网络中。js-yaml 的安装非常简单,只需要在命令行中运行 npm i js-yaml 命令即可安装。在安装完成后,我们可以通过 require("js-yaml") 的方式引入该库,然后使用其中提供的方法来进行解析和序列化操作。据 npmjs.com 和 GitHub 上的信息显示,js-yaml 是一个非常流行的 JavaScript 库,在 npm 包管理器中有超过 16,900 个项目正在使用它,并且它也得到了众多开发者的关注和支持。
$3
> axios 是一个基于 Promise 的 HTTP 客户端,可以用在浏览器和 node.js 中,能够支持请求的拦截、响应的拦截、请求取消、自动转换 JSON 数据等功能。它具有极为简单的 API 接口且易于上手,并且支持 TypeScript。axios 最初是由一个名为 Matt Zabriskie 的开发者创建的,后来被合并到 JavaScript 库之中。它已经成为了越来越多的开发者们使用的首选框架之一,广泛应用于各种 Web 开发场景。使用 axios,我们可以很方便地发起 GET、POST、PUT、DELETE 等各种类型的 HTTP 请求,并且能够自定义 headers, timeout 以及其他一些配置选项。另外,在与 Promise 结合使用时,我们可以通过 Promise 的异常处理机制来处理请求过程中出现的错误,使代码结构更加清晰简洁。
$3
> chalk 是一个在终端输出时可以对输出样式进行设置的 Node.js 第三方库。其可以用来为终端输出添加颜色和样式,如加粗、下划线等,从而使终端输出更具可读性。chalk 库提供了丰富的 API,提供了多种样式和颜色选项,并且是基于 ANSI 转义码实现的。
$3
> adm-zip 是一个纯 JavaScript 实现的 Zip 数据压缩库,用于在 Node.js 应用中对 Zip 文件进行创建、解压缩操作。它支持将压缩文件直接写入到磁盘或内存缓冲区。adm-zip 还提供了一组 API 方法和属性,用于读取、修改以及添加条目和文件。adm-zip 提供了一个简单易用的 API,使用 npm 包管理器可以很方便地安装和发布。同时,它也比其他基于 C 的 Zip 库更快,因为它是一个纯 JavaScript 实现的库。该库还具有优秀的跨平台兼容性,可以在多个操作系统平台上运行。