一覧へ戻る
withshepherd/graphql-codegen-zod(新しいタブで開きます)
主要言語: TypeScript
- star 数
- 59
- watcher 数
- 0
- fork 数
- 5
- issue 数
- 9
- 最終更新
- 2024/02/27
主要言語: TypeScript
The reason for this project is to maintain a single source of truth, between graphql and zod. This is useful for validation on forms. Inspired by codegen-graphql-yup
z.string().email()If you only want to validate the required fields, what you can do is use the plugin in the following way
generates: schemas.ts: plugins: - graphql-codegen-zod
If you need more validations than only required fields, you have to follow this steps.
this is because in graphql instrospection we dont have access to directives
directive @validation( pattern: String min: Int max: Int requiredMessage: String typeOf: String ) on INPUT_FIELD_DEFINITION | ARGUMENT_DEFINITION
result.graphql
directive @validation( pattern: String min: Int max: Int requiredMessage: String typeOf: String ) on INPUT_FIELD_DEFINITION | ARGUMENT_DEFINITION input TestInput { something: String! } input RegisterAddressInput { postalCode: TestInput! @validation(requiredMessage: "It field have custom message.") state: [String]! city: String! someNumber: Int @validation(min: 10, max: 20) someNumberFloat: Float @validation(min: 10.50, max: 20.50) someBoolean: Boolean line2: String @validation(min: 10, max: 20) }
codegen.yml
overwrite: true schema: "./result.graphql" generates: schemas.ts: plugins: - graphql-codegen-zod: onlyWithValidation: false