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
相关产品推荐
相关产品推荐

