Docs / Integrations / Integration with NestJS Integration with NestJS Nest (Nest JS) is a progressive Node.js framework for building efficient, reliable and scalable server-side applications.
v5latest v4 v3 v2 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 →