2.0.6 • Published 4 months ago

swagger2ts-gen-cli v2.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

What

swagger2ts-gen-cli 是一个基于 Nodejs + Rollup + TypeScript 等技术开发,可根据后端服务的 swagger-api 自动化生成客户端代码的 Cli 工具。

Why

这个背景 ♨️下产生了编写自动化生成工具的想法

Requirements

  • Node version (v16.0.0+)
  • 外网环境支持

How

  1. 使用 npmpnpm 安装 npm install swagger2ts-gen-cli -D pnpm add swagger2ts-gen-cli -D

  2. 安装完毕后直接在命令行输入 swagger2ts-gen-clisg-cli 可查看命令,如果执行失败可添加 npx 前缀试试

  Options:
    -V, --version          output the version number
    -h, --help             display help for command
  Commands:
    gen [options]          根据后端服务的 swagger-api 生成客户端代码
    help [command]         display help for command
  1. npx swagger2ts-gen-cli gen -h 查看 gen 命令需要的参数
跟据后端服务的 swagger-api 生成客户端代码
  Options:
    -url, --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

示例

  1. 💡 直接将 Swagger 2 标准的 API 生成相应客户端类型的文件
sg-cli gen -url http://172.18.10.58:30042/swagger-resources -ct typescript-fetch -o ./swagger2ts-generated/v2 -clean
  1. 💡 直接将 OpenAPI 3 标准的 API 生成相应客户端类型的文件
sg-cli gen -url http://172.18.10.28:30060/v3/api-docs/swagger-config -ct typescript-axios -o ./swagger2ts-generated/v3 -clean
  1. 💡 将 Swagger 2 先转换成 OpenAPI 3 标准 API,再生成相应客户端类型的文件
sg-cli gen -url http://172.18.10.58:30042/swagger-resources -c -ct typescript-axios -o ./swagger2ts-generated/v2to3 -clean

问题交流

⚡️ 可以扫描下方微信公众号私信我

微信公众号

🌟 如果你也喜欢这个项目,请给我一个 star。你的鼓励就是我最大的动力!

依赖库介绍

commander

commander 是一个用于解析命令行参数和生成命令行界面的 Node.js 库。它提供了一组强大的 API,可以轻松创建 CLI 工具、自动化脚本、服务器端应用程序等各种类型的 Node.js 程序。该库支持定义参数、选项和子命令,并在程序运行时轻松解析这些内容。它还提供了参数验证、帮助信息生成、命令行提示符等功能,是 Node.js 社区中最流行的命令行开发库之一。

ora

ora 是一个用于 Node.js 的命令行加载指示器库。在执行长时间的任务或等待 IO 操作完成时,这个库可以在终端上显示一个动态的加载指示器,让用户知道程序正在运行,并且不会误以为程序已经挂起了。ora 库支持自定义加载指示器的样式和颜色,可以根据需要创建旋转、箭头、进度条和等待图标等多种样式。此外,该库还支持 promise 和 async/await 的方式调用,使得编写异步代码更加方便。通过简单易用的 API,ora 库已经成为 Node.js 社区中最受欢迎的命令行加载指示器库之一,被广泛应用于各种类型的 CLI 工具、自动化脚本和其他 Node.js 应用程序中。

fs-extra

fs-extra 是一个对 Node.js 原生文件系统模块(fs)进行扩展和增强的 Node.js 库。它提供了更多的功能和操作,如删除目录、拷贝文件、读取 json 文件、文件重命名等等。相对于原生的 fs 模块,fs-extra 库对使用者的友好度更高,封装了常用的操作,易于理解和使用。

rimraf

rimraf 是一个用于 Node.js 的文件删除工具。它提供了一个强大的 API,可以递归地删除整个目录树和其中的所有文件。它也支持 Windows 平台上的路径,可以在不同的操作系统环境下工作。相对于原生的 fs 模块,它提供了更高层次的封装,使用起来更加方便,并且在处理较大的目录时效率更高。

js-yaml

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 个项目正在使用它,并且它也得到了众多开发者的关注和支持。

axios

axios 是一个基于 Promise 的 HTTP 客户端,可以用在浏览器和 node.js 中,能够支持请求的拦截、响应的拦截、请求取消、自动转换 JSON 数据等功能。它具有极为简单的 API 接口且易于上手,并且支持 TypeScript。axios 最初是由一个名为 Matt Zabriskie 的开发者创建的,后来被合并到 JavaScript 库之中。它已经成为了越来越多的开发者们使用的首选框架之一,广泛应用于各种 Web 开发场景。使用 axios,我们可以很方便地发起 GET、POST、PUT、DELETE 等各种类型的 HTTP 请求,并且能够自定义 headers, timeout 以及其他一些配置选项。另外,在与 Promise 结合使用时,我们可以通过 Promise 的异常处理机制来处理请求过程中出现的错误,使代码结构更加清晰简洁。

chalk

chalk 是一个在终端输出时可以对输出样式进行设置的 Node.js 第三方库。其可以用来为终端输出添加颜色和样式,如加粗、下划线等,从而使终端输出更具可读性。chalk 库提供了丰富的 API,提供了多种样式和颜色选项,并且是基于 ANSI 转义码实现的。

adm-zip

adm-zip 是一个纯 JavaScript 实现的 Zip 数据压缩库,用于在 Node.js 应用中对 Zip 文件进行创建、解压缩操作。它支持将压缩文件直接写入到磁盘或内存缓冲区。adm-zip 还提供了一组 API 方法和属性,用于读取、修改以及添加条目和文件。adm-zip 提供了一个简单易用的 API,使用 npm 包管理器可以很方便地安装和发布。同时,它也比其他基于 C 的 Zip 库更快,因为它是一个纯 JavaScript 实现的库。该库还具有优秀的跨平台兼容性,可以在多个操作系统平台上运行。

2.0.6

4 months ago

2.0.3

7 months ago

2.0.2

7 months ago

2.0.5

7 months ago

2.0.4

7 months ago

2.0.1

8 months ago

2.0.0

8 months ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago