You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GraphQL Codegen默认生成watchQuery,如何改为单次查询?

调整GraphQL Codegen生成的Svelte Apollo操作类型

可以通过修改graphql-codegen-svelte-apollo插件的配置项,自定义生成的操作类型(比如普通query、mutate、subscribe,而非仅watchQuery)。

修改Codegen配置

更新你的Codegen配置文件,为graphql-codegen-svelte-apollo插件添加自定义配置:

import type { CodegenConfig } from '@graphql-codegen/cli';

const config: CodegenConfig = {
    schema: 'https://api.echoos.app/graphql',
    documents: './src/lib/graphql-service/**/*.gql',
    generates: {
        './src/lib/graphql-service/generated.ts': {
            plugins: [
                'typescript',
                'typescript-operations',
                {
                    'graphql-codegen-svelte-apollo': {
                        // 指定需要生成的操作类型,按需选择
                        generateOperations: ['query', 'watchQuery', 'mutate', 'subscribe'],
                        // 为不同操作的函数添加后缀,避免命名冲突
                        querySuffix: 'Query',
                        watchQuerySuffix: 'Watch',
                        mutateSuffix: 'Mutate',
                        subscribeSuffix: 'Subscribe'
                    }
                }
            ]
        }
    },
    watch: false
};
export default config;

配置说明

  • generateOperations:指定要生成的操作类型数组,可选值包括query(普通查询,返回Promise)、watchQuery(监听查询,返回Svelte Readable)、mutate(变更操作)、subscribe(订阅操作)。你可以根据需求只保留需要的类型。
  • 后缀配置:为不同类型的操作函数添加后缀,避免同名查询/变更的函数命名冲突。例如原Me查询会生成MeQuery(普通查询)和MeWatch(监听查询)两个函数。

生成效果示例

配置完成后,重新执行Codegen命令,会生成普通查询函数,示例如下:

export const MeQuery = (
  options: Omit<QueryOptions<MeQueryVariables>, 'query'>
): Promise<ApolloQueryResult<MeQuery>> => {
  return client.query({
    query: MeDoc,
    ...options
  });
};

内容的提问来源于stack exchange,提问作者SebastianG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 02:18:31