如果我不使用放大,如何从 AppSync GraphQL 模式生成 Typescript 定义?

How to generate Typescript definitions from AppSync GraphQL schema if I am not using amplify?

我使用 aws-cdk 设置了我的 AppSync api,但没有使用他们的放大框架。我试图弄清楚如何/是否可以在不使用放大的情况下从我的 AppSync schema.graphql 文件生成 Typescript 定义,即无法访问 amplify codegen 命令。我确实尝试安装并 运行 它,但我假设 amplify 期望文件位于某些目录中,因此失败了。

我查看了 https://graphql-code-generator.com,但由于 AppSync 使用的特殊类型,如 AWSDateTime,它无法正常工作,解决此问题的方法是发布 api 并从 graphql 获取架构端点,但这并不理想,即我希望能够在不发布模式的情况下在本地生成这些类型。

这可行吗?

如果有一些自定义标量(如 AWSDateTime)不属于你的 schema.graphql 文件,你可以创建一个单独的文件,如 scalars.graphql 并添加那些缺失的类型自己定义:

scalar AWSDateTime
scalar AWSPhone
scalar AWSJSON

然后只需将一个 glob 传递给匹配两个文件的 GraphQL 代码生成器——它们将合并为一个模式。