Automagically Load GraphQL typedefs and resolvers
Installation
> npm i load-graphql # or with yarn > yarn add load-graphql
load-graphql
has peerDependencies on graphql
and graphql-tools
, so you
need to install these 2 packages as well if you haven't
npm i graphql graphql-tools
Usage
assuming you have your project structure as follow:
project/
└── src/
├── schema.js
└── graphql/
├── common.graphql
├── some.resolver.js
├── nested
│ ├── deeplyNested.graphql
│ └── deeplyNested.resolver.js
└── otherTypeOfFile.js
# src/graphql/common.graphql# because Query and Mutation typedef are predefined, you can immediately extend them in your graphql filesextend type Query { someQuery: String! someOtherQuery: Number!} extend type Mutation { createSomething(title: String!): Boolean} scalar JSON
// src/graphql/some.resolver.jsconst Query someQuery: => 'test' // someOtherQuery can be omitted or implement in a different .resolver.js file} const Mutation createSomethingroot title // ... do something here return true }} const JSON =
// src/schema.js file; // orconst loadGraphql = default; const pathToGraphqlRootDir = path; // difference from v1, in v2, loadGrahpQL return a tuple include the schema, and additional typedef and resovlersconst executableSchema reformattedTypeDef resolversMap = ; /* excutableSchema will 1. combine all typedefs in .graphql files, and 2. merge all resolvers in .resolver.js files these pattern can be configurable */
Configuration
loadGraphql
function receives a second options
parameter with the following
properties:
properties key | default value | description |
---|---|---|
resolversPattern | **/*.resolver.js |
glob for matching resolver files |
typedefsPattern | **/*.graphql |
glob for matching resolver files |
you can pass anything that glob
package accepts for these options.
Error handling
load-graphql
gracefully handles error thrown while trying to parse typedefs
file or require
'ing resolver files. In case of error, it will ignore the
content of the flawed files and continue.