如何告诉 apollo codegen 查找查询的确切文件

Posted

技术标签:

【中文标题】如何告诉 apollo codegen 查找查询的确切文件【英文标题】:How to tell apollo codegen to look for the exact files for the queries 【发布时间】:2020-04-01 01:09:56 【问题描述】:

我的项目目录结构是这样的:

- schema.graphql
- package.json
- packages
-- types
--- package.json
--- src
---- graphql-types
----- user.ts
----- generated

现在在这里,schema.graphql 包含从apollo client:download-schema 下载的架构。 user.ts 包含我的 graphql 查询,如下所示:

export const CURRENT_USER = gql`
  query CurrentUser 
    currentUser 
      id
      name
    
  
`;

现在的问题是,我需要为此查询生成类型定义,如果我在代码生成命令中添加文件的确切路径,apollo codegen 命令只会选择文件,如下所示:

我想告诉生成器搜索那里的所有 ts 文件。我尝试了以下方法,但都失败了:

yarn run apollo codegen:generate --target=typescript --tagName=gql --addTypename --includes=packages/types/src/graphql-types/**/*.ts,tsx,js,jsx,graphql --localSchemaFile=schema.graphql --globalTypesFile=packages/types/src/graphql-types/generated/graphql-global-types.ts --outputFlat packages/types/src/graphql-types/generated/

yarn run apollo codegen:generate --target=typescript --tagName=gql --localSchemaFile=schema.graphql --addTypename --includes=packages/types/src/graphql-types/**/*.ts --globalTypesFile=packages/types/src/graphql-types/generated/graphql-global-types.ts --outputFlat packages/types/src/graphql-types/generated/

yarn run apollo codegen:generate --target=typescript --tagName=gql --localSchemaFile=schema.graphql --addTypename --includes=packages/types/src/graphql-types --globalTypesFile=packages/types/src/graphql-types/generated/graphql-global-types.ts --outputFlat packages/types/src/graphql-types/generated/ 

我总是遇到以下两个错误之一:

No operations or fragments found to generate code for.

zsh: no matches found: --includes=packages/types/src/graphql-types/**/*.ts

知道发生了什么吗?

【问题讨论】:

【参考方案1】:

看起来我缺少包含参数中的引号。所以正确的做法是:

--includes='packages/types/src/graphql-types/*.ts'

来源:https://github.com/apollographql/apollo-tooling/issues/1367

【讨论】:

以上是关于如何告诉 apollo codegen 查找查询的确切文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Apollo Rover + Codegen 生成打字稿模式类型

从 graphql-codegen 获取类似于 apollo codegen 生成的类型

在客户端解析器中导入类型时,如何避免使用 Apollo 客户端和“graphql-codegen”的角度项目中的循环依赖?

Apollo 的检查并运行 apollo-codegen.sh 不起作用?

为啥 apollo client:codegen 不生成类型?

Apollo 客户端:codegen 如何为@client 指令生成类型?