【OpenAPI Generator】GitHubからファイルをダウンロードせずにAPIクライアントを生成する方法

2021-11-28

今月頭にGitHub からファイルをダウンロードする方法という記事を書いたのですが、そもそもダウンロードすら不要だったので改めて書いていこうと思います。


事前準備

手順

スキーマを準備する

GitHub のてきとうなリポジトリにスキーマファイルを配置します。(スキーマのサンプル

で、そのファイルの Raw を開き、url をコピーします。(スキーマの Raw のサンプル

上記のサンプルはパブリックリポジトリなので url にトークンが付与されていないですが、プライベートリポジトリの場合 url の末尾に ?token=piyomoge みたいな値がついているはずです。

クライアントを生成する

ローカルのてきとうな場所に package.json を配置し、@openapitools/openapi-generator-cli をインストールします。

スクリプトを適宜追加します。

{
  ...,
  "scripts": {
    "generate": "openapi-generator-cli generate -g typescript-axios -i https://raw.githubusercontent.com/hoge/fuga/schema.yml?token=piyomoge -o src"
  },
  ...
}

あとは npm run generate を実行すれば生成されます。

めっちゃ簡単ですね。

token を外出しにする

とはいえ、普通に考えて token を直書きは気持ち悪いので外出しにすると思います。

その場合、package.json と同じフォルダー内に token とかてきとうな名前のファイルを作り、token の値をそのまま貼り付けます。

あとはスクリプトを以下のように書き換えたら OK です。

{
  ...,
  "scripts": {
    "generate": "openapi-generator-cli generate -g typescript-axios -i https://raw.githubusercontent.com/hoge/fuga/schema.yml?token=$(cat token) -o src"
  },
  ...
}

これで業務レベルでも問題なくいけます。


数年前にこのやり方で生成していたはずなんですが、現場から離れてからやり方を忘れてしまいずーっともやもやしていました。

が、@openapitools/openapi-generator-cli の Usage に普通に githubusercontent を使うやり方が書いてありますね…今までなんで気づけなかったんだ…。

token の差し替えのやり方がちょっとトリッキーですが、スクリプトファイルを作ってしまえば普通に環境変数でもいけると思いますので、よしなにやってもらえれば良いと思います。