💡

OpenAPI generatorのバージョンを切り替えて使う

2022/10/28に公開

TL;DR

  • 元々openapi-generator-cliを使ってる場合は特に不要と思われる記事。
  • brewのswitchでも問題なくやれてるよって人はほぼ不要だと思われる記事。
  • openapi-generator-cliを使ってバージョンが切り替えられる。 https://www.npmjs.com/package/@openapitools/openapi-generator-cli

経緯

現行(2022/10/28)の6.2.0で、Generatorが出力するPython-flaskのスタブサーバーのModelの内容が変わっているため、Validationがうまく動かずテストコードがエラーになってしまうことが多発した。

こちらに書いたIssueがその内容です。
https://github.com/OpenAPITools/openapi-generator/issues/13837

バージョンを戻そうにも、brewでopenapi-generatorをinstallして使っていたがバージョンが切り替えられなかった。

brew switchで切り替える方法もある。
https://zenn.dev/takky94/scraps/60e0017b81e7a1
(記事でもopenapi-generatorのバージョンを変えているので、そういう需要は多そう)

brew switchで変える時は、gitでcommitを参照したりとちょっと煩わしさを感じる。
brew install openapi-generator@5.3.1 みたいにインストールできればいいのに。

解決方法

openapi-generator-cliを使う。恥ずかしながら、JS系のソフトウェアではないから、入れる意味がないと思っていました。。。

インストールから使用開始まではこの記事に書いてある通りなので、詳しい内容はこちらを参照。
https://www.npmjs.com/package/@openapitools/openapi-generator-cli

以降、使用感などを書いていきます。

Install

Globalではなく、Localにinstallするのがおすすめだと言われる。確かにLocalのnpmで管理できるのであれば、他のプロジェクトとは違ったものを使えたりとか、Prosは多そう。

npm install @openapitools/openapi-generator-cli

Generate

サンプルでは

openapi-generator-cli generate ...

となっているんだけど、頭にnpxがないと動かないと思うんだけど、どうなんだろう。
実際自分の環境ではnpxをつけないと動かなかった。yarnやってる人もいるから?

npx openapi-generator-cli generate ...

Version Manager

粋で鯔背なバージョン管理機能がある。

npx openapi-generator-cli version-manager list

カーソルで好きなバージョンを選択してEnterを押すと、そのバージョンが使えるようになる。

鯔背。

その他

npm(yarnでももちろん良いが)を使っておく利点としては、いちいちShell fileを作らなくても、npmのscriptsに書いておけば、npm runで実行できるので、楽。

{
  "name": "inasedane-cli",
  "version": "0.0.0",
  "scripts": {
    "generate-openapi": "openapi-generator-cli generate -i swagger-build.yaml -g python-flask",
  }
}

※この文章の20%くらいは、Copilotによる自動生成です。

Discussion