Skip to content
/ nexus Public
forked from graphql-nexus/nexus

Code-First, Type-Safe, GraphQL Schema Construction

License

Notifications You must be signed in to change notification settings

stretch0/nexus

This branch is 41 commits behind graphql-nexus/nexus:main.

Folders and files

NameName
Last commit message
Last commit date
Jun 23, 2021
Aug 22, 2019
Sep 2, 2021
Sep 2, 2021
Dec 14, 2020
Sep 6, 2021
Sep 6, 2021
Sep 30, 2020
Jul 17, 2020
Oct 3, 2020
Nov 23, 2020
Nov 4, 2018
Feb 5, 2019
May 20, 2021
Oct 7, 2020
Oct 3, 2020
Nov 21, 2020
Sep 3, 2021
Mar 27, 2021
Aug 3, 2020
Aug 3, 2020
Mar 27, 2021
Aug 3, 2020
Sep 30, 2020
Sep 3, 2021

Repository files navigation

Nexus

trunk npm version

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

Installation

npm install nexus graphql

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
    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

import { queryType, stringArg, makeSchema } from 'nexus'
import { GraphQLServer } from 'graphql-yoga'

const Query = queryType({
  definition(t) {
    t.string('hello', {
      args: { name: stringArg() },
      resolve: (parent, { name }) => `Hello ${name || 'World'}!`,
    })
  },
})

const schema = makeSchema({
  types: [Query],
  outputs: {
    schema: __dirname + '/generated/schema.graphql',
    typegen: __dirname + '/generated/typings.ts',
  },
})

const server = new GraphQLServer({
  schema,
})

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

More examples can be found in the /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.

About

Code-First, Type-Safe, GraphQL Schema Construction

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 99.8%
  • Other 0.2%