Relay Compiler
Relay depends upon ahead-of-time compilation of GraphQL queries and fragments to generate artifacts that are used at runtime.
The Relay compiler is a command line tool that reads GraphQL fragments, queries, and mutations in your JavaScript code and generates TypeScript/Flow types and additional JavaScript code that gets included in your code via Relay's Babel Plugin.
This guide explains configuring and using the Relay Compiler.
Configuration​
The Relay compiler will look for a Relay config in the following locations. It's up to you to decide which location works best for your project.
relay.config.json
in your project rootrelay.config.(js/mjs/ts)
in your project root- A
"relay"
key in yourpackage.json
The Relay compiler config tells Relay things like where it can find your GraphQL schema and what language your code is writen in. A minimal Relay compiler config looks like this:
{
"src": "./src",
"schema": "./schema.graphql",
"language": "typescript"
}
The compiler config is very powerful, and includes many specialized configuration options. These are not yet exhaustively documented. In the mean time see relay-compiler-config-schema.json.
Install the Relay VSCode extension to get autocomplete, hover tips, and type checking for the options in your relay config.
Running the compiler​
It is generally recommended that you add a scripts
entry to your package.json
to make it easy to run the Relay compiler for your project.
{
"scripts": {
"relay": "relay-compiler"
}
}
With this added you can run the Relay compiler like so:
npm run relay
Watch mode​
If you have watchman installed you can pass --watch
to the Relay compiler to have it continue running and automatically update generated files as you edit your product code:
npm run relay --watch
Codemods​
The Relay compiler supprts some built in codemods. Learn more in the Codemods Guide.
Help​
To learn about the other capabilities of the Relay compiler see it's extensive --help
output:
npm run relay --help