npm install --save-dev @swc/plugin-relay @swc/core
The below shows how to configure @swc/plugin-relay
and pass the options to Webpack:
Create an .swcrc.js
file like the below:
// .swcrc.js
module.exports = {
jsc: {
experimental: {
plugins: [
[
"@swc/plugin-relay",
{
rootDir: __dirname,
artifactDirectory: "src/__generated__",
language: "typescript",
eagerEsModules: true,
},
],
// Or if you want to use multiple projects
[
"@swc/plugin-relay",
{
projects: [
{
rootDir: path.resolve(__dirname, '../project1'),
},
{
rootDir: path.resolve(__dirname, '../project2'),
}
],
language: "typescript",
eagerEsModules: true,
},
],
],
},
parser: {
syntax: "typescript",
tsx: true,
},
transform: {
react: {
runtime: "automatic",
},
},
},
};
And then update your swc-loader
Webpack config:
const swcConfig = require("./.swcrc.js")
// ...
{
include: path.resolve("./src"),
test: /\.ts$/,
use: [
{
loader: "swc-loader",
options: swcConfig,
},
],
}
Note: We're using a
.swcrc.js
file extension up above and importing the config directly because Relay needs access to__dirname
, which can't be derived from the default JSON parsed from.swcrc
.
By default, @swc/plugin-relay
will transpile import paths based on the language
option.
You can use outputFileExtension
to change the file extension of the generated import paths.
plugins: [
[
"@swc/plugin-relay",
{
rootDir: __dirname,
artifactDirectory: "src/__generated__",
language: "typescript",
eagerEsModules: true,
outputFileExtension: "js",
},
],
],
In this example typescript graphql files will output transpiled import path of javascript
ending with .js
.
- f436a09: Update swc_core to v10.
- f155bce: Update swc_core to v9
- c9e75ce: Bump crate versions
- 4574a70: Update swc_core to v8.0.1
- f3cea5f: Bump versions
- a73664c: Update swc_core to v6.0.2
- 4ff3b22: Move formatjs plugin to official plugin repository
- 4ad7f56: Update swc_core to v5
- ba13397: Update swc_core to v4
- 0508b6d: Update swc_core to v3
- cd5ad2a: Update swc_core to 1.0
- 20162c8: Update swc_core to v0.106.0
- 04548e2: Update swc_core to 0.103.x
- f8e5fd0: Update swc_core to 0.102.x
- 7d17e25: Update swc_core to v0.101.x
- 7391419: Update swc_core to v0.100.0
- 9c28afb: Update swc_core to 0.99.x (@swc/core 1.7.0)
- 06e1e66: Fix operation name detection
- 7984823: Use Arc instead of Config
- af25741: Update swc_core to 0.96.0
- be5f997: Support multi-project mode
- 41a8f56: Update swc_core to v0.95.x
- fc30490: Update swc_core to v0.93.0
- 67f7bc2: Publish packages
- 0f38844: Publish all chanages
- 1379d24: Make config parsing typed.
- 1cc9eda: Update dependencies
- 247cca6: Update rustc to 'nightly-2024-04-16'
- 876bbce: Update swc_core to 0.92.x
- 8e91d39: Update swc_core to 0.91.x
- 8c6f890: Always add current directory to relative output paths
- f4df366: Update swc_core
- c88b22b: Align package metadata
- a3cc4fb: Organize pacakge metadata
- e9e78ef: Update swc crates
- 6096d6d: Fix plugin version schema issue
- 37d3aaf: Depend on the swc download counter package
- dc0dc6b: Use correct identifier for imports
- 8bd92c7: swc_core 0.90.x
- 4ef0b7f: Add changelog to the readme
- 4e72680: [email protected]
- 16bb4d8: [email protected]