Graphql Codegen - 带有自定义键 => 值的枚举

问题描述

我使用 graphql-codegen 生成类型文件

例如,假设我的 schema.graphql 文件中有以下内容

enum cities {
 JOHANnesBURG
 CAIRO
 NEW_YORK
 LONDON
 BEIJING
}

我的 generated-types.ts 文件中的输出如下:

export enum cities {
 Johannesburg = 'JOHANnesBURG'
 Cairo = 'CAIRO'
 NewYork = 'NEW_YORK'
 London = 'LONDON'
 Beijing = 'BEIJING'
}

有没有办法在代码生成运行之前“覆盖”枚举的值?也许如下(我显然尝试过):

enum cities {
 JOHANnesBURG: 'JNB'
 CAIRO: 'CAI'
 NEW_YORK: 'NYC'
 LONDON: 'LON'
 BEIJING: 'BEI'
}

反过来应该产生:

export enum cities {
 Johannesburg = 'JNB'
 Cairo = 'CAI'
 NewYork = 'NYC'
 London = 'LON'
 Beijing = 'BEI'
}

解决方法

不确定我是否为时已晚,但您可能可以使用 enumValues 来自定义您的内部枚举值。这是documentation。例如:

./types.ts

export enum cities {
 Johannesburg = 'JNB'
 Cairo = 'CAI'
 NewYork = 'NYC'
 London = 'LON'
 Beijing = 'BEI'
}

./codegen.yml

generates:
  src/graphql.types.ts:
    config:
      useIndexSignature: true
      enumValues:
        cities: ./types#cities // path to your custom types
    plugins:
      - typescript
      - typescript-resolvers