Integration with NestJS
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).
For the setup of a new Nest project, please make sure to read the Nest GraphQL documentation .
Standalone
Install
npm i @nestjs/graphql @graphql-yoga/nestjs graphql-yoga graphqlCreate 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 i @nestjs/graphql @graphql-yoga/nestjs-federation graphql-yoga graphqlSubgraph
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 {}A complete example of the subgraph implementation is available in the repository .
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 .