gql-hook-codegen
This tool generates TypeScript types for queries/mutations written in an GraphQL project given a valid GraphQL schema.
Install
Yarn
yarn add gql-hook-codegen
NPM
npm install gql-hook-codegen
How to use
Step 1: Create a Typescript file use-user.gql.ts
with the following content
import gql from 'graphql-tag'
const query = gql`
query {
user {
name
}
}
`
Step 2: Add schema file schema.gql
type User {
id: ID!
name: String
}
type Query {
user(id: ID!): User
}
Step 3: Run the following code:
npx gql-hook-codegen generate --schemaFile './schema.gql'
Step 4: Script will update use-user.gql.ts
to the following:
import { QueryHookOptions, useQuery } from '@apollo/client'
import gql from 'graphql-tag'
const query = gql`
query fetchUser($id: ID!) {
user(id: $id) {
name
}
}
`
export interface RequestType {
id: string | undefined
}
export interface QueryType {
user?: UserType
}
export interface UserType {
name?: string
__typename?: 'User'
}
export function useUserQuery(
request: RequestType,
options?: QueryHookOptions<QueryType, RequestType>,
) {
return useQuery<QueryType, RequestType>(query, {
variables: request,
skip: !request.id,
...options,
})
}
More Examples
- Schema
- Query
- Query with no parameters
- Batched Queries
- Query with multiple inputs
- Query with enum
- Query with date
- Query with shared variable
- Mutation
- Lazy query
- Query with union
Usage
gql-hook-codegen generate [--pattern=<string>] [--schema-file=<string>] [--schema-url=<string>]
[--ignore=<string>] [--package=<string>] [--save] [--help]
OPTIONS
--pattern=<string> File pattern
--schema-file=<string> Location of the schema file
--schema-url=<string> Url to fetch graphql schema from
--ignore=<string> Folders to ignore
--package=<string> Default package to use
--save Save schema locally if --schema-url is used
COMMON
--help Show help
Automatic Release
Here is an example of the release type that will be done based on a commit messages:
Commit message | Release type |
---|---|
fix: [comment] | Patch Release |
feat: [comment] | Minor Feature Release |
perf: [comment] | Major Feature Release |
doc: [comment] | No Release |
refactor: [comment] | No Release |
chore: [comment] | No Release |