@jokio/graphql-import
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

graphql-import

CircleCI npm version

Import & export definitions in GraphQL SDL (also refered to as GraphQL modules)

There is also a graphql-import-loader for Webpack available.

Install

yarn add graphql-import

Usage

import { importSchema } from 'graphql-import'
import { makeExecutableSchema } from 'graphql-tools'

const typeDefs = importSchema('schema.graphql')
const resolvers = {}

const schema = makeExecutableSchema({ typeDefs, resolvers })

Examples

Importing specific fields

Assume the following directory structure:

.
├── a.graphql
├── b.graphql
└── c.graphql

a.graphql

# import B from "b.graphql"

type A {
  # test 1
  first: String
  second: Float
  b: B
}

b.graphql

# import C from 'c.graphql'

type B {
  c: C
  hello: String!
}

c.graphql

type C {
  id: ID!
}

Running console.log(importSchema('a.graphql')) produces the following output:

type A {
  first: String
  second: Float
  b: B
}

type B {
  c: C
  hello: String!
}

type C {
  id: ID!
}

Extending root fields

It is possible to import from a root field like Query;

queries.graphql

type Query {
  feed: [Post!]!
  drafts: [Post!]!
}

mutations.graphql

type Mutation {
  publish(id: ID!): Post!
  deletePost(id: ID!): Post!
}

schema.graphql

# import Query.* from "queries.graphql"
# import Mutation.publish from "mutations.graphql"

Running console.log(importSchema('schema.graphql')) produces the following output:

type Query {
  feed: [Post!]!
  drafts: [Post!]!
}

type Mutation {
  publish(id: ID!): Post!
}

Please refer to src/index.test.ts for more examples.

Development

The implementation documentation documents how things are implemented under the hood. You can also use the VSCode test setup to debug your code/tests.

Related topics & next steps

  • Static import step as build time
  • Namespaces
  • Support importing from HTTP endpoints (or Links)
  • Create RFC to add import syntax to GraphQL spec

Prisma

Readme

Keywords

none

Package Sidebar

Install

npm i @jokio/graphql-import

Weekly Downloads

1

Version

0.0.4

License

MIT

Unpacked Size

58.5 kB

Total Files

12

Last publish

Collaborators

  • ezeki