CodegenConfig.documents
documentsという命名、かなり意味がわからないmrsekut.icon
GPT-4.icon
1. documents フィールドとは?
クライアント向けの型を生成するときに必要です
※逆にサーバー側の型(リゾルバ型)だけ生成するなら、documentsは不要です。
---
2. 指定できる場所
ルートレベルに指定できる(基本はこちら)
出力ファイルごとにも個別に指定できる
ルートレベルに指定する例
code:ts
const config: CodegenConfig = {
documents: 'src/**/*.graphql',
generates: {
'./src/types.ts': {
}
}
}
code:ts
const config: CodegenConfig = {
generates: {
'./src/types1.ts': {
documents: 'src/**/*.graphql',
}
}
}
---
3. ドキュメントのスキャン方法
GraphQL Codegenにはドキュメントスキャナーが内蔵されていて、
.graphqlファイル
.tsx, .jsx, .ts, .jsファイル
の中からGraphQLクエリを抽出できます!
例えば .tsxファイルから探す場合:
code:ts
const config: CodegenConfig = {
documents: 'src/**/!(*.d).{ts,tsx}'
}
---
4. documentsの指定方法一覧
table:table
指定方法 説明
:--- :---
ファイルパス './src/query.graphql'
複数ファイル ['./src/query.graphql', './src/other.graphql']
Globパターン './src/**/*.graphql'
除外(!) ['./src/**/*.graphql', '!*.generated.graphql']
コードファイル(tsx, jsx) ['./src/*.tsx'] (gqlタグ付き文字列から抽出)
直接AST文字列 ['query { f1 }', 'query { f2 }'](テスト用途)
---
5. コードファイル(tsx/jsx)からクエリを拾う場合
例:
code:tsx
const MY_QUERY = gql`
query myQuery {
getSomething {
id
}
}
`
// または
const MY_QUERY = /* GraphQL */ `
query myQuery {
getSomething {
id
}
}
`