Go to file
Flavian Desverne d66e8f10d7 feat: rename typegenAutoConfig and rootTyping (#723)
BREAKING CHANGES:
- Renames `typegenAutoConfig` to `sourceTypes`
- Renames `typegenAutoConfig.sources` to `sourceTypes.modules`
- Renames `typegenAutoConfig.sources[].source` to `sourcesTypes.modules[].module`
- Renames `rootTyping` to `sourceType`
2020-12-10 19:23:23 +01:00
.github fix(ci): restore ci config to normal 2020-12-07 14:15:18 -05:00
.vscode fix: use ts declaration source maps for better ide dx (#199) 2019-08-21 22:14:20 -04:00
docs feat: rename typegenAutoConfig and rootTyping (#723) 2020-12-10 19:23:23 +01:00
examples feat: rename typegenAutoConfig and rootTyping (#723) 2020-12-10 19:23:23 +01:00
patches feat: allow arbitrary extensions on nexus types (#684) 2020-12-07 09:10:15 -05:00
scripts feat: add t.modify API for modifying inherited fields (#634) 2020-11-18 21:58:14 -05:00
src feat: rename typegenAutoConfig and rootTyping (#723) 2020-12-10 19:23:23 +01:00
tests feat: rename typegenAutoConfig and rootTyping (#723) 2020-12-10 19:23:23 +01:00
tmp tmp: tmp/index.html 2020-09-30 12:43:03 +02:00
.gitignore chore: try website deploy 2020-07-17 14:03:14 -04:00
.prettierrc chore: Keep prettier config local to the project (#531) 2020-10-03 16:26:50 -04:00
CHANGELOG.md chore: Add release changelog entries to CHANGELOG.md (#656) 2020-11-23 09:26:23 -05:00
CONTRIBUTING.md Renaming 2018-11-03 23:44:05 -04:00
LICENSE.md Update documentation & site 2019-02-05 02:33:57 -05:00
README.md feat: replace list & nullable API by type wrappers (#538) 2020-11-18 17:59:59 +01:00
codecov.yml feat: add onObjectDefinition / onInputObjectDefinition (#533) 2020-10-07 13:08:43 -04:00
gulpfile.js chore: Bumping deps & adding scripts for running examples (#530) 2020-10-03 15:50:56 -04:00
jest.config.js chore: Restore integration codegen removed in #629 and #630 (#654) 2020-11-21 17:02:58 -05:00
package.json feat: allow arbitrary extensions on nexus types (#684) 2020-12-07 09:10:15 -05:00
tsconfig.build.json feat: new docs site (#500) 2020-09-30 12:25:39 +02:00
tsconfig.cjs.json fix: MaybePromiseDeep case of null with .then (#475) 2020-08-03 16:56:44 -04:00
tsconfig.esm.json fix: MaybePromiseDeep case of null with .then (#475) 2020-08-03 16:56:44 -04:00
tsconfig.json fix: MaybePromiseDeep case of null with .then (#475) 2020-08-03 16:56:44 -04:00
tsconfig.spec.types.json fix: MaybePromiseDeep case of null with .then (#475) 2020-08-03 16:56:44 -04:00
tslint.json feat: new docs site (#500) 2020-09-30 12:25:39 +02:00
yarn.lock feat: allow arbitrary extensions on nexus types (#684) 2020-12-07 09:10:15 -05:00

README.md

Nexus Schema

trunk npm version

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

Installation

npm install @nexus/schema graphql

Note you must also add graphql. Nexus Schema 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/schema'
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 Schema 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.