Skip to content

Commit b20eb99

Browse files
tbezmantimneutkens
andauthoredJan 26, 2022
Relay Support in Rust Compiler (#33240)
## Feature Implements feature requested in #30805. A few people including myself have been looking to use Relay with Next.JS and want to use the new Rust Compiler. This is my stab at an implementation. ### How it works? Finds all `graphql` tagged template experssions and replaces them with `require`s to the file generated by Relay. ### Where I need help - I've only worked with Rust a handful of times so I would appreciate any feedback on my use of language features. - Is there any performance overhead to many duplicate usages of `require`? I imagine there's a cache in place but I want to be sure. - I've added some unit tests & integration tests but I might be missing some use cases. Feel free to comment some use cases I'm not thinking about. - [x] Related issues linked using `fixes #number` - [x] Integration tests added - [ ] Documentation added - I haven't added any docs since this is an experimental API. ## Documentation / Examples You're expected to be running the Relay Compiler along side Next.JS when you're developing. This is pretty standard. I wouldn't expect people to have any problem with this. ### Usage In your `next.config.js` ```js module.exports = { experimental: { relay: { language: 'typescript', // or 'javascript` artifactDirectory: 'path/to/you/artifact/directory' // you can leave this undefined if you did not specify one in the `relay.json` } } } ``` Co-authored-by: Tim Neutkens <6324199+timneutkens@users.noreply.github.com>
1 parent 99d4d6c commit b20eb99

File tree

35 files changed

+2424
-141
lines changed

35 files changed

+2424
-141
lines changed
 

‎docs/advanced-features/compiler.md

+13
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,19 @@ const customJestConfig = {
9494
module.exports = createJestConfig(customJestConfig)
9595
```
9696

97+
### Relay
98+
99+
To enable [Relay](https://relay.dev/) support:
100+
101+
```js
102+
// next.config.js
103+
module.exports = {
104+
experimental: {
105+
relay: true,
106+
},
107+
}
108+
```
109+
97110
### Remove React Properties
98111

99112
Allows to remove JSX properties. This is often used for testing. Similar to `babel-plugin-react-remove-properties`.

‎package.json

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"@types/http-proxy": "1.17.3",
6060
"@types/jest": "24.0.13",
6161
"@types/node": "13.11.0",
62+
"@types/relay-runtime": "13.0.0",
6263
"@types/selenium-webdriver": "4.0.15",
6364
"@types/sharp": "0.29.3",
6465
"@types/string-hash": "1.1.1",
@@ -145,6 +146,8 @@
145146
"react-dom": "17.0.2",
146147
"react-dom-18": "npm:react-dom@18.0.0-rc.0",
147148
"react-ssr-prepass": "1.0.8",
149+
"relay-compiler": "13.0.1",
150+
"relay-runtime": "13.0.1",
148151
"release": "6.3.0",
149152
"request-promise-core": "1.1.2",
150153
"resolve-from": "5.0.0",

0 commit comments

Comments
 (0)
Please sign in to comment.