@flybondi/graphql-import

[![CircleCI](https://circleci.com/gh/flybondi/graphql-import/tree/develop.svg?style=svg)](https://circleci.com/gh/flybondi/graphql-import/tree/develop) [![js-semistandard-style](https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg?style=

Usage no npm install needed!

<script type="module">
  import flybondiGraphqlImport from 'https://cdn.skypack.dev/@flybondi/graphql-import';
</script>

README

@flybondi/graphql-import

CircleCI js-semistandard-style code style: prettier

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

This is a custom fork of graphql-import created by prisma.io.

Install

yarn add @flybondi/graphql-import

Usage

const { importSchema } = require('@flybondi/graphql-import');
const { makeExecutableSchema } = require('graphql-tools');

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

const schema = makeExecutableSchema({ typeDefs, resolvers });

Assume the following directory structure:

.
├── schema.graphql
├── posts.graphql
└── comments.graphql

schema.graphql

# import Post from "posts.graphql"

type Query {
  posts: [Post]
}

posts.graphql

# import Comment from 'comments.graphql'

type Post {
  comments: [Comment]
  id: ID!
  text: String!
  tags: [String]
}

comments.graphql

type Comment {
  id: ID!
  text: String!
}

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

type Query {
  posts: [Post]
}

type Post {
  comments: [Comment]
  id: ID!
  text: String!
  tags: [String]
}

type Comment {
  id: ID!
  text: String!
}

Importing with globs

You can also import every .graphql files in your project using globs patterns.

Assume the following directory structure:

.
├── movies.graphql
├── books.graphql

movies.graphql

type Movie {
  id: ID!
  name: String
  director: String
  seen: Boolean!
}

type Query {
  movie(id: ID!): Movie
}

books.graphql

type Book {
  id: ID!
  name: String
  read: Boolean!
}

type Query {
  book(id: ID!): Book
}

type Mutation {
  readBook(id: ID!): Book
}

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

type Query {
  movie(id: ID!): Movie
  book(id: ID!): Book
}

type Mutation {
  readBook(id: ID!): Book
}

type Book {
  id: ID!
  name: String
  read: Boolean!
}

type Movie {
  id: ID!
  name: String
  director: String
  seen: Boolean!
}

API

Check original Prisma full documentation for graphql-import.


Refactored (and maintained) with 💛 by Flybondi.