私が歌川です

@utgwkk が書いている

GraphQL Code GeneratorでTypeScript向けのenumの型だけを生成してみる

tl;dr

  • プラグインを作る (改造する) と実現できることは分かった
  • 既存のプラグインのオプションを調整するだけで実現できるかは不明

背景

GraphQLスキーマファイルを生成するためにGraphQL Code Generatorを使っており、GraphQLクエリに関するコード生成はrelay-compilerを使っている。また、プログラミング言語としてTypeScriptを使って開発している。

動機

relay-compilerが生成するTypeScriptファイルにenumの型定義が含まれている。enumを使うqueryやfragmentのファイルに型定義があるけど、個別のファイルとして欲しい。

GraphQLクエリを書いた箇所ごとにenumの型定義があるので借用する、という形ではなくenumの型定義が置いてあって自由に使えるとよさそう、というイメージ。コンポーネントに紐づかないユーティリティー関数を書きたくなる場合もあって、そういうときにどこからenumの型定義を借用するのか、という問題が出てしまう。

既存の手法

GraphQL Code GeneratorのTypeScriptプラグインでもenumの型は生成できるけど、inputの型なども含まれてしまう。欲しいのはenumの型定義なので、うまく出力を絞りたい。

TypeScriptプラグインを改造する手法

GraphQL Code GeneratorのTypeScriptプラグインの出力を絞ればよいのではないか、という方針でちょっと書いてみた。enum.tsを見ると、enumの型定義だけしかないことが分かると思う。

github.com

おわりに

GraphQL Code GeneratorのTypeScriptプラグインを改造すると表題にあることは達成できると分かった。もうちょっと手軽にできる方法があればよいけど、誰か知ってたら教えてください。