Recodegen
Faster GraphQL codegen for TypeScript projects
Installation
Binary
- you can download binaries from Releases page
NPM
Globally via NPM
npm install -g @graphql-recodegen/cli
- to run
recodegen -config=recodegen.json
Locally via NPM
npm install --save-dev @graphql-recodegen/cli
- to run
./node_modules/.bin/recodegen -config=recodegen.json
Build from Source
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 install recodegen
and be able to run it from any directory. For this to work make sure your PATH
contains output from go env GOPATH
command
Usage
./recodegen
- reads recodegen.json
and tries to generate types./recodegen -config=codegen.json
- can specify custom JSON file
Configuration
- 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:
like documents: "dir/*.ts"
it should be documents: ["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
Config 1 - separate files for generated schema and operations
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
const query = gql`
query findUser($id: uuid!) {
first_name
last_name
}
`;
- Writes operations into
generated/operations.ts
operations.ts
will import schema types like import * 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"]
}
}
}
Config 2 - single file for generated schema and operations
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
Known Issues