Search code examples
graphqlapolloapollo-server

Apollo GraphQL - Import .graphql schema as typeDefs


With graphql-yoga you can simply import your schema by doing the following: typeDefs: './src/schema.graphql'. Is there a similar way of doing so with apollo-server-express?

If there isn't, how does one import the typeDefs from an external .graphql file?


Solution

  • I found a way of doing this by using graphql-import which does exactly what I need. See sample code below:

    import { ApolloServer } from 'apollo-server-express'
    import { importSchema } from 'graphql-import'
    import Query from './resolvers/Query'
    
    const typeDefs = importSchema('./src/schema.graphql')
    const server = new ApolloServer({
        typeDefs,
        resolvers: {
            Query
        }
    })
    
    const app = express()
    server.applyMiddleware({ app })
    
    app.listen({ port: 4000 })
    

    **

    UPDATE: graphql-import v0.7+

    **

    importSchema is now async and should be handled as a promise. Just wrap it in a async function and simply await it:

    async function start() {
        const typeDefs = await importSchema(".src/schema.graphql")
    }