要将Apollo Server的内置"Upload"类型与graphql-codegen一起使用并生成TS类型,可以按照以下步骤操作:
npm install graphql-codegen @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-resolvers graphql-upload
schema: "http://localhost:4000/graphql" # 更改为你的GraphQL服务URL
documents: "src/**/*.graphql"
generates:
src/generated/graphql.ts:
plugins:
- "typescript"
- "typescript-resolvers"
config:
useIndexSignature: true
withResolverType: true
withMutationFunction: false
withDirectiveResolvers: false
scalars:
Upload: "GraphQLUpload" # 告诉codegen将"Upload"类型映射到GraphQLUpload标量
const { codegen } = require("@graphql-codegen/cli");
codegen({
config: require.resolve("./codegen.yml"),
}).then(() => {
console.log("Types generated successfully!");
});
scalar Upload
type Mutation {
uploadFile(file: Upload!): String!
}
node codegen.js
import { GraphQLResolveInfo } from "graphql";
import { Upload } from "graphql-upload";
export type Resolver = (
parent: any,
args: Args,
context: Context,
info: Info
) => Promise | Result;
export interface Mutation {
uploadFile: Resolver;
}
这样,你就可以将Apollo Server的内置"Upload"类型与graphql-codegen一起使用,并生成正确的TS类型。