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

toinhao1/nexus

This branch is 1 commit ahead of graphql-nexus/nexus:main.

Folders and files

NameName
Last commit message
Last commit date
May 15, 2022
Aug 22, 2019
Mar 16, 2023
May 15, 2022
Dec 14, 2020
May 25, 2023
Jul 2, 2022
Sep 30, 2020
Jul 2, 2022
Oct 3, 2020
Nov 23, 2020
Nov 4, 2018
Feb 2, 2023
Mar 16, 2023
Oct 7, 2020
Oct 3, 2020
Nov 21, 2020
Jul 2, 2022
Mar 27, 2021
Aug 3, 2020
Aug 3, 2020
Feb 17, 2022
Aug 3, 2020
Sep 30, 2020
Jul 2, 2022

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

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.8%
  • Other 0.2%