Skip to content

Light and easy package that will load .graphql files and use them with syntax highlighting

License

Notifications You must be signed in to change notification settings

tiago154/graphql-import-files

Repository files navigation

npm

Build Status Coverage Status GitHub code size in bytes Npm Version GitHub

graphql-import-files

Light and easy package that will load .graphql files and use them with syntax highlighting.

Install

npm i -S graphql-import-files

Usage:

Loading a single file

For example, your files and folders look like this:

root
├──src
  ├──index.js
  ├──schema
    ├──schema.graphql

Use the function loadFile that will load a single file.

// index.js
const { ApolloServer } = require('apollo-server')
const { loadFile } = require('graphql-import-files')
const resolvers = require('./resolvers')

const server = new ApolloServer({
  typeDefs: loadFile('./schema/schema.graphql'), // Always consider the path at the root of the project
  resolvers
})

server.listen().then(({ url }) => {
  console.log(`Running on ${url}`)
})

The loadFile function supports the #import annotation and this will allow you to load other files as if it were the import in a js file.

root
├──src
  ├──index.js
  ├──schema
    ├──schema.graphql
    ├──user
      ├──user.graphql
    ├──location
      ├──location.graphql

./src/schema/schema.graphql

#import './user/user.graphql'
#import './location/location.graphql'

type Query {
  user(id: ID!): User
  location(id: ID!): Location
}

./src/schema/user/user.graphql

type User {
  id: ID!
  name: String!
}

./src/schema/location/location.graphql

type Location {
  id: ID!
  name: String!
}
// index.js
// ...
const { loadFile } = require('graphql-import-files')

const server = new ApolloServer({
  typeDefs: loadFile('./schema/schema.graphql'), // Always consider the path at the root of the project
  resolvers
})
// ...

Loading multiple files

For example, your files and folders look like this:

root
├──src
  ├──index.js
  ├──schemas
    ├──query.graphql
    ├──user
      ├──user.gql
      ├──role.gql
    ├──product
      ├──product.graphql

Use the function loadFiles that will load multiple files.

// index.js
const { ApolloServer } = require('apollo-server')
const { loadFiles } = require('graphql-import-files')
const resolvers = require('./resolvers')

const server = new ApolloServer({
  typeDefs: loadFiles('**/schemas/**/*.{graphql,gql}'), // Use the glob pattern to find multiple files
  resolvers
})

server.listen().then(({ url }) => {
  console.log(`Running on ${url}`)
})