What is @graphql-tools/code-file-loader?
The @graphql-tools/code-file-loader package is part of the GraphQL Tools ecosystem and is designed to load and parse GraphQL schema definitions and documents from various file types. It supports loading from .graphql, .graphqls, .gql, .js, and .ts files. This loader is particularly useful in building GraphQL schemas directly from files, making it easier to manage and modularize GraphQL codebases.
What are @graphql-tools/code-file-loader's main functionalities?
Load GraphQL schema from code files
This feature allows developers to load GraphQL schemas directly from .graphql, .js, or .ts files. The code sample demonstrates how to use the codeFileLoader with the loadSchema function from @graphql-tools/load to asynchronously load a schema from a .graphql file.
import { loadSchema } from '@graphql-tools/load';
import { codeFileLoader } from '@graphql-tools/code-file-loader';
async function getSchema() {
const schema = await loadSchema('./schema.graphql', {
loaders: [codeFileLoader]
});
return schema;
}
Merge resolvers and type definitions
This feature supports loading and merging both resolvers and type definitions from multiple files. The code sample shows how to use loadFiles to load all resolver and type definition files from a project, and then use makeExecutableSchema to combine them into a single executable schema.
import { loadFiles } from '@graphql-tools/load-files';
import { makeExecutableSchema } from '@graphql-tools/schema';
async function buildSchema() {
const typesArray = await loadFiles('**/*.typeDefs.{js,ts}');
const resolversArray = await loadFiles('**/*.resolvers.{js,ts}');
const schema = makeExecutableSchema({
typeDefs: typesArray,
resolvers: resolversArray
});
return schema;
}
Other packages similar to @graphql-tools/code-file-loader
graphql-import
The graphql-import package allows importing and merging GraphQL SDL files. It is similar to @graphql-tools/code-file-loader but focuses more on SDL files and lacks direct support for loading from JavaScript or TypeScript files.
graphql-tag
graphql-tag is primarily used to parse GraphQL query strings into a standard GraphQL AST. It is less about loading schemas from files and more focused on enabling the embedding and handling of GraphQL queries in JavaScript files.