TL;DR

  • GraphQL Tools の loadSchemaSync と GraphQLFileLoader を使うと、.graphql ファイルに書いた GraphQL Schema を TypeScript のコードから読み込める。
  • 読み込んだ Schema には、addResolversToSchema で Resolver を追加できる。

検証

GraphQL Tools のドキュメントに沿って、必要なパッケージをインストールする。

$ npm i @graphql-tools/graphql-file-loader @graphql-tools/load @graphql-tools/schema

loadSchemaSync に Schema ファイルのパスと、ローダとして GraphQLFileLoader を渡して読み込む。

// src/index.ts
import { GraphQLFileLoader } from "@graphql-tools/graphql-file-loader"
import { loadSchemaSync } from "@graphql-tools/load"
 
const schema = loadSchemaSync("schema.graphql", {
  loaders: [new GraphQLFileLoader()],
})

読み込んだ Schema に、addResolversToSchema で Resolver を追加する。

// index.ts
const resolvers = {
  Query: { ... },
  Mutation: { ... },
};
 
const schemaWithResolvers = addResolversToSchema({ schema, resolvers });

あとは、この schemaWithResolvers を Apollo Server などに渡せばよい。

キーワード

参考