GraphQL Codegen Plugin to create React Hooks using Apollo's client for Client preset
We now recommend using the client-preset package for a better developer experience and smaller impact on bundle size. -- typescript-react-apollo is not recommended to use with
@newmo/graphql-codegen-plugin-typescript-react-apollo
because it is not maintained.
However, Client preset does not generate React Hooks
for @appllo/client
.
This plugin generates React Hooks using Apollo's client. Also, This plugin depends on Client preset.
Install with npm:
npm install @newmo/graphql-codegen-plugin-typescript-react-apollo --save-dev
# this plugin depends on @graphql-codegen/client-preset
npm install @graphql-codegen/cli @graphql-codegen/client-preset @graphql-typed-document-node/core --save-dev
You need to it with Client preset.
Your graphql-codegen.ts
should look like this:
import type { CodegenConfig } from '@graphql-codegen/cli';
const config: CodegenConfig = {
overwrite: true,
schema: "./api/graphql/api.graphqls",
documents: "./api/graphql/query.graphql",
generates: {
// generates types to api/generated/*
'./api/generated/': {
preset: 'client'
},
// generates React Hooks using Apollo's client to api/generated/hooks.tsx
'./api/generated/hooks.tsx': {
'plugins': [
'@newmo/graphql-codegen-plugin-typescript-react-apollo'
],
config: {
// path to generated types
// In this case, it refer './api/generated/graphql.ts'
typesFile: './graphql'
}
}
}
};
export default config;
Run codegen:
$ graphql-codegen --config graphql-codegen.ts
namingConvention
(optional): Naming convention for the generated types. Default ischange-case#pascalCase
.typesPrefix
(optional): Prefix for the generated types.typesSuffix
(optional): Suffix for the generated types.
See test/snapshots/typescript for example output.
See Releases page.
Install devDependencies and Run npm test
:
npm test
Pull requests and stars are always welcome.
For bugs and feature requests, please create an issue.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
MIT © newmo, Inc.