Docs / Integrations / Integration with NestJS Integration with NestJS GraphQL Yoga v5 documentation (superseded by v6): Nest (Nest JS) is a progressive Node.js framework for building efficient, reliable and scalable server-side applications.
v6latest v5 v4 v3 v2
This is the documentation for the old GraphQL Yoga v5
We recommend upgrading to the latest GraphQL Yoga v6.
Migrate to GraphQL Yoga v6 .
Nest (Nest JS) is a progressive Node.js framework for building efficient,
reliable and scalable server-side applications.
GraphQL Yoga provides its own Nest GraphQL Driver that support building standalone GraphQL APIs and
Apollo Federation GraphQL APIs (Gateway and
Services).
Standalone
Install
npm yarn pnpm bun
npm i @nestjs/graphql @graphql-yoga/nestjs graphql-yoga graphql yarn add @nestjs/graphql @graphql-yoga/nestjs graphql-yoga graphql pnpm add @nestjs/graphql @graphql-yoga/nestjs graphql-yoga graphql bun add @nestjs/graphql @graphql-yoga/nestjs graphql-yoga graphql
Create Application Module
import { YogaDriver, YogaDriverConfig } from '@graphql-yoga/nestjs'
import { Module } from '@nestjs/common'
import { GraphQLModule } from '@nestjs/graphql'
@ Module ({
imports: [
GraphQLModule. forRoot < YogaDriverConfig >({
driver: YogaDriver
})
]
})
export class AppModule {}
Develop GraphQL
This is just a HTTP transport driver; meaning, everything else should work as
showcased in NestJS documentation .
Apollo Federation
Separately, we offer a @graphql-yoga/nestjs-federation driver which allows building Apollo
Federation Gateways and Services through the YogaGatewayDriver and YogaFederationDriver drivers.
Install
npm yarn pnpm bun
npm i @nestjs/graphql @graphql-yoga/nestjs-federation graphql-yoga graphql yarn add @nestjs/graphql @graphql-yoga/nestjs-federation graphql-yoga graphql pnpm add @nestjs/graphql @graphql-yoga/nestjs-federation graphql-yoga graphql bun add @nestjs/graphql @graphql-yoga/nestjs-federation graphql-yoga graphql
Subgraph
For the subgraph we use the YogaFederationDriver and YogaFederationDriverConfig.
import { YogaFederationDriver, YogaFederationDriverConfig } from '@graphql-yoga/nestjs-federation'
import { Module } from '@nestjs/common'
import { GraphQLModule } from '@nestjs/graphql'
import { DeprecatedProductsResolver } from './deprecated-products.resolver'
import { InventoryResolver } from './inventory.resolver'
import { ProductResearchResolver } from './product-research.resolver'
import { ProductsResolver } from './products.resolver'
import { UsersResolver } from './users.resolver'
@ Module ({
imports: [
GraphQLModule. forRoot < YogaFederationDriverConfig >({
driver: YogaFederationDriver,
typePaths: [ '**/*.graphql' ]
})
],
providers: [
UsersResolver,
ProductsResolver,
ProductResearchResolver,
DeprecatedProductsResolver,
InventoryResolver
]
})
export class AppModule {}
Gateway
For the gateway we use the YogaGatewayDriver and YogaGatewayDriverConfig.
import { YogaGatewayDriver, YogaGatewayDriverConfig } from '@graphql-yoga/nestjs-federation'
import { Module } from '@nestjs/common'
import { GraphQLModule } from '@nestjs/graphql'
@ Module ({
imports: [
GraphQLModule. forRoot < YogaGatewayDriverConfig >({
driver: YogaGatewayDriver,
gateway: {
services: [{ name: 'subgraph' , url: 'http://subgraph/graphql' }]
}
})
]
})
export class AppModule {}
Further development
Yoga offers just a federation and gateway driver; meaning, everything else works as
showcased in NestJS federation documentation .
← Koa Next.js →