2.0.2 • Published 6 years ago
load-graphql v2.0.2
Automagically Load GraphQL typedefs and resolvers
Installation
> npm i load-graphql
# or with yarn
> yarn add load-graphqlload-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-toolsUsage
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 files
extend type Query {
someQuery: String!
someOtherQuery: Number!
}
extend type Mutation {
createSomething(title: String!): Boolean
}
scalar JSON// src/graphql/some.resolver.js
export const Query {
someQuery: () => 'test'
// someOtherQuery can be omitted or implement in a different .resolver.js file
}
export const Mutation {
createSomething(root, { title }) {
// ... do something here
return true
}
}
export const JSON = require('graphql-json-type')// src/schema.js file
import loadGraphql from "load-graphql";
// or
const loadGraphql = require("load-graphql").default;
const pathToGraphqlRootDir = path.join(__dirname, "./graphql");
// difference from v1, in v2, loadGrahpQL return a tuple include the schema, and additional typedef and resovlers
const [executableSchema, reformattedTypeDef, resolversMap] = loadGraphql(
pathToGraphqlRootDir,
);
/*
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.