What is @graphql-tools/load-files?
@graphql-tools/load-files is a utility package that allows you to load files from the file system, specifically for GraphQL schema and resolvers. It is part of the GraphQL Tools ecosystem and is designed to help you modularize your GraphQL code by loading multiple files and merging them into a single schema or resolver map.
What are @graphql-tools/load-files's main functionalities?
Load GraphQL Type Definitions
This feature allows you to load GraphQL type definitions from .graphql files. The `loadFilesSync` function synchronously loads all files matching the given pattern and returns an array of type definitions.
const { loadFilesSync } = require('@graphql-tools/load-files');
const typeDefs = loadFilesSync('**/*.graphql');
console.log(typeDefs);
Load Resolvers
This feature allows you to load resolver functions from JavaScript or TypeScript files. The `loadFilesSync` function synchronously loads all files matching the given pattern and returns an array of resolver objects.
const { loadFilesSync } = require('@graphql-tools/load-files');
const resolvers = loadFilesSync('**/*.{js,ts}');
console.log(resolvers);
Load Files Asynchronously
This feature allows you to load files asynchronously. The `loadFiles` function returns a promise that resolves to an array of loaded files, which can be useful for non-blocking operations.
const { loadFiles } = require('@graphql-tools/load-files');
(async () => {
const typeDefs = await loadFiles('**/*.graphql');
console.log(typeDefs);
})();
Other packages similar to @graphql-tools/load-files
graphql-import
graphql-import allows you to import .graphql files into your JavaScript or TypeScript code. It is similar to @graphql-tools/load-files in that it helps modularize your GraphQL schema, but it focuses specifically on importing and merging .graphql files.
merge-graphql-schemas
merge-graphql-schemas is a utility to merge multiple GraphQL schemas and resolver maps into a single schema. It provides similar functionality to @graphql-tools/load-files but is more focused on the merging aspect rather than file loading.
graphql-tag
graphql-tag is a library that parses GraphQL schema language into the GraphQL AST. While it doesn't load files from the filesystem, it is often used in conjunction with file loading utilities to parse the loaded schema strings into AST nodes.