如何配置GraphQL Codegen的Schema合并顺序,让本地Schema覆盖CMS Schema?
解决GraphQL Codegen Schema合并顺序问题
要实现本地Schema覆盖线上CMS Schema,核心是调整GraphQL Codegen配置中schema数组的顺序:
- 配置规则:将需要被覆盖的Schema(线上CMS端点)放在数组前面,用来覆盖的本地Schema放在数组后面。因为Codegen在合并Schema时,后加载的定义会覆盖先加载的同名类型、字段等。
具体配置示例
YAML配置(codegen.yml)
schema: - "https://your-cms-endpoint/graphql" - "./src/local-schema.graphql" # 其他生成配置...
TypeScript配置(codegen.ts)
import type { CodegenConfig } from '@graphql-codegen/cli'; const config: CodegenConfig = { schema: [ 'https://your-cms-endpoint/graphql', './src/local-schema.graphql' ], // 示例生成客户端代码配置 generates: { './src/gql/': { preset: 'client', plugins: [] } } }; export default config;
额外说明
如果仅需覆盖特定字段而非整个类型,可在本地Schema中使用extend type语法,但仍需保证本地Schema在配置顺序中靠后,才能让扩展定义优先生效。
内容的提问来源于stack exchange,提问作者N1h1lum
相关产品推荐
相关产品推荐

