guide config graphql codegen - wwwsolutions/nestjs-starter-kit GitHub Wiki

Implements code generator.

Features

  • generate-apollo-angular-components
  • generate-resolvers-signature
  • generate-schema-types

Install

npm i -D @graphql-codegen/add @graphql-codegen/cli @graphql-codegen/introspection @graphql-codegen/schema-ast @graphql-codegen/typescript @graphql-codegen/typescript-apollo-angular @graphql-codegen/typescript-operations @graphql-codegen/typescript-resolvers
EDIT project.json
// libs/api/integration/graphql-prisma/project.json

    "generate-resolvers-signature": {
      "executor": "@nrwl/workspace:run-commands",
      "options": {
        "parallel": false,
        "commands": [
          "npx graphql-codegen --config libs/api/integration/graphql-prisma/src/lib/codegen/generate-resolvers-signature.yaml"
        ]
      }
    },
    "generate-apollo-angular-components": {
      "executor": "@nrwl/workspace:run-commands",
      "options": {
        "parallel": false,
        "commands": [
          "npx graphql-codegen --config libs/api/integration/graphql-prisma/src/lib/codegen/generate-apollo-angular-components.yaml"
        ]
      }
    },
    "generate-schema-types": {
      "executor": "@nrwl/workspace:run-commands",
      "options": {
        "parallel": false,
        "commands": [
          "npx graphql-codegen --config libs/api/integration/graphql-prisma/src/lib/codegen/generate-schema-types.yaml"
        ]
      }
    },
    "generate": {
      "executor": "@nrwl/workspace:run-commands",
      "options": {
        "parallel": false,
        "commands": [
          "npx nx run api-integration-graphql-prisma:generate-resolvers-signature",
          "npx nx run api-integration-graphql-prisma:generate-generate-apollo-angular-components",
          "npx nx run api-integration-graphql-prisma:generate-schema-types"
        ]
      }
    }
  },
ADD FILES
# libs/api/integration/graphql-prisma/src/lib/codegen/generate-apollo-angular-components.yaml

overwrite: true
schema:
  - libs/api/data-access/models/src/lib/generated/schema.graphql
generates:
  libs/api/data-access/models/src/lib/generated/apollo-angular-components.ts:
    hooks:
      afterOneFileWrite:
        - prettier --write
    plugins:
      - add:
          content: '/* eslint-disable @typescript-eslint/ban-types,@typescript-eslint/no-explicit-any */'
      - add:
          content: '// WARNING: This file is automatically generated. Do not edit.'
      - add:
          content: import {Prisma} from '@prisma/client'
      - typescript
      - typescript-resolvers
      - typescript-apollo-angular
    config:
      useIndexSignature: true
      noSchemaStitching: true
      scalars:
        DateTime: Date
        JSON: Prisma.JsonValue
  schema.json:
    plugins:
      - introspection
    config:
      minify: true
# libs/api/integration/graphql-prisma/src/lib/codegen/generate-resolvers-signature.yaml

overwrite: true
schema:
  - libs/api/data-access/models/src/lib/generated/schema.graphql
generates:
  libs/api/data-access/models/src/lib/generated/resolvers-signature.ts:
    hooks:
      afterOneFileWrite:
        - prettier --write
    plugins:
      - add:
          content: '/* eslint-disable @typescript-eslint/ban-types,@typescript-eslint/no-explicit-any */'
      - add:
          content: '// WARNING: This file is automatically generated. Do not edit.'
      - add:
          content: import {Prisma} from '@prisma/client'
      - typescript
      - typescript-resolvers
    config:
      useIndexSignature: true
      noSchemaStitching: true
      scalars:
        DateTime: Date
        JSON: Prisma.JsonValue
  schema.json:
    plugins:
      - introspection
    config:
      minify: true
# libs/api/integration/graphql-prisma/src/lib/codegen/generate-schema-types.yaml

overwrite: true
schema:
  - libs/api/data-access/models/src/lib/generated/schema.graphql
generates:
  libs/api/data-access/models/src/lib/generated/schema-types.ts:
    hooks:
      afterOneFileWrite:
        - prettier --write
    plugins:
      - add:
          content: '/* eslint-disable @typescript-eslint/ban-types,@typescript-eslint/no-explicit-any */'
      - add:
          content: '// WARNING: This file is automatically generated. Do not edit.'
      - add:
          content: import {Prisma} from '@prisma/client'
      - typescript
    config:
      useIndexSignature: true
      noSchemaStitching: true
      scalars:
        DateTime: Date
        JSON: Prisma.JsonValue
  schema.json:
    plugins:
      - introspection
    config:
      minify: true
⚠️ **GitHub.com Fallback** ⚠️