Amplify中拆分schema.graphql及API.service.ts生成文件的方法问询
拆分Amplify的GraphQL Schema与自动生成的API文件方案
一、拆分schema.graphql(可行)
Amplify CLI原生支持多文件Schema自动合并,你之前用#import失败是因为#在GraphQL Schema里是注释符号,该行被当成了注释。正确做法如下:
- 进入你的API目录:
amplify/backend/api/<你的API名称> - 创建
schema文件夹 - 将原
schema.graphql的内容按业务模块拆分到多个.graphql文件中(比如user.graphql、post.graphql),每个文件独立定义对应的类型、指令等 - 根目录的
schema.graphql可保留(Amplify会合并根目录文件与schema文件夹下的所有文件),也可直接删除 - 执行
amplify push,Amplify会自动合并所有Schema文件并完成部署
二、拆分自动生成的API.service.ts(可行)
Amplify默认生成的单文件API.service.ts可以通过自定义代码生成工具实现拆分,推荐用graphql-codegen配合Amplify插件:
- 安装依赖:
npm install -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/typescript-amplify
- 在项目根目录创建
codegen.yml配置文件,示例按操作类型拆分的配置:
schema: ./amplify/backend/api/<你的API名称>/schema/**/*.graphql generates: ./src/graphql/generated/: plugins: - typescript - typescript-operations - typescript-amplify config: splitOperations: true # 按查询、突变、订阅拆分文件 generateModels: true # 生成独立的模型类型文件
- 在
package.json的scripts中添加命令:
"scripts": { "codegen": "graphql-codegen --config codegen.yml" }
- 执行
npm run codegen,会在指定目录生成拆分后的文件(比如queries.ts、mutations.ts、subscriptions.ts及各模型的类型文件) - 后续每次
amplify push后,运行npm run codegen即可更新拆分后的API文件,替代默认的单文件生成结果
内容的提问来源于stack exchange,提问作者sword
相关产品推荐
相关产品推荐

