Faster GraphQL codegen for TypeScript projects
- you can download binaries from Releases page
npm install -g @graphql-recodegen/cli
- to run
recodegen -config=recodegen.json
npm install --save-dev @graphql-recodegen/cli
- to run
./node_modules/.bin/recodegen -config=recodegen.json
git clone git@github.com:poul-kg/recodegen.git
cd recodegen
cd cmd/recodegen
go build
- you'll see a binary file createdgo install
- to installrecodegen
and be able to run it from any directory. For this to work make sure yourPATH
contains output fromgo env GOPATH
command
./recodegen
- readsrecodegen.json
and tries to generate types./recodegen -config=codegen.json
- can specify custom JSON file
- the idea was to re-use existing Apollo
@graphql-codegen/cli
JSON config format plugins: ['typescript']
- will generate schema typesplugins: ['typescript-operations']
- will generate operations- only two plugins supported:
plugins: ['typescript', 'typescript-operations']
- you can't use
documents:
likedocuments: "dir/*.ts"
it should bedocuments: ["dir/*.ts"]
- basically two config examples you see below are the only supported options for now, everything else will be ignored or will throw an error
The following config will:
- read GraphQL schema from
schema/backend.graphql
file - generate
generated/schema.generated.ts
file with all schema types - scan all
*.ts
files in./backend
directory and try to extract GraphQL queries, which should be defined as
// backend/my-service.ts
const query = gql`
query findUser($id: uuid!) {
first_name
last_name
}
`;
- Writes operations into
generated/operations.ts
operations.ts
will import schema types likeimport * as Types from "./schema.generated";
recodegen.json
{
"overwrite": true,
"schema": "schema/backend.graphql",
"generates": {
"generated/schema.generated.ts": {
"plugins": [
"typescript"
]
},
"generated/operations.ts": {
"preset": "import-types",
"presetConfig": {
"typesPath": "./schema.generated"
},
"plugins": [
"typescript-operations"
],
"documents": ["backend/**/*.ts"]
}
}
}
recodegen.json
{
"overwrite": true,
"schema": "schema/backend.graphql",
"generates": {
"generated/schema.generated.ts": {
"plugins": [
"typescript", "typescript-operations"
],
"documents": ["backend/**/*.ts"]
}
}
}
./recodegen
- to build schema file and operations file
- some output is not properly formatted
- types in the generated output may change order on every new generation
- generated files are overwritten even if there is no change
- No Interface support
- No Union support
- no unit tests
- GraphQL fragment support is limited but something is supported
- some type names might differ a bit from what is generated by
@graphql-codegen/cli
- it's pretty raw right now, was done pretty quickly to avoid constant disappointment with slow codegen