Nexus

Code-First, Type-Safe, GraphQL Schema Construction

README

Nexus

trunk npm version

Declarative, code-first and strongly typed GraphQL schema construction for TypeScript & JavaScript.

Installation


  1. ```
  2. npm install nexus graphql
  3. ```

Note you must also add graphql. Nexus pins to it as a peer dependency.

Features


- Expressive, declarative API for building schemas
- Full type-safety for free
- Powerful plugin system
- No need to re-declare interface fields per-object
- Optionally possible to reference types by name (with autocomplete)  
  Rather than needing to import every single piece of the schema
- Interoperable with vanilla graphql-js types, and it's _just_ a [GraphQLSchema](https://graphql.org/graphql-js/type/#graphqlschema)  
  So it fits in just fine with existing community solutions of apollo-server, graphql-middleware, etc.
- Inline function resolvers  
  For when you need to do simple field aliasing
- Auto-generated graphql SDL schema  
  Great for when seeing how any code changes affected the schema
- DRY-up schema design  
  Create higher level "functions" which wrap common fields

Example


  1. ```ts
  2. import { queryType, stringArg, makeSchema } from 'nexus'
  3. import { GraphQLServer } from 'graphql-yoga'

  4. const Query = queryType({
  5.   definition(t) {
  6.     t.string('hello', {
  7.       args: { name: stringArg() },
  8.       resolve: (parent, { name }) => `Hello ${name || 'World'}!`,
  9.     })
  10.   },
  11. })

  12. const schema = makeSchema({
  13.   types: [Query],
  14.   outputs: {
  15.     schema: __dirname + '/generated/schema.graphql',
  16.     typegen: __dirname + '/generated/typings.ts',
  17.   },
  18. })

  19. const server = new GraphQLServer({
  20.   schema,
  21. })

  22. server.start(() => `Server is running on http://localhost:4000`)
  23. ```

More examples can be found in the [/examples](./examples) directory:


Documentation


You can find the docs for Nexus here.

Migrate from SDL


If you've been following an SDL-first approach to build your GraphQL server and want to see what your code looks like when written with GraphQL Nexus, you can use the [SDL converter](https://nexus.js.org/converter).