SWC Plugin
SWC is an extensible Rust-based platform for the next generation of fast developer tools.
If you're using SWC in your project, you can opt for the @lingui/swc-plugin
. This plugin, designed for SWC, is a Rust version of Lingui Macros.
SWC Compatibility
SWC Plugin support is still experimental. Semver backwards compatibility between different @swc/core
versions is not guaranteed. You need to choose an appropriate version of the @lingui/swc-plugin
to match the compatible @swc/core
version.
It is recommended to check the plugins.swc.rs site to find the compatible version.
Installation
Install @lingui/swc-plugin
as a development dependency:
- npm
- Yarn
- pnpm
npm install --save-dev @lingui/swc-plugin
yarn add --dev @lingui/swc-plugin
pnpm add --save-dev @lingui/swc-plugin
To ensure that the resolved version of @swc/core
is one of the supported versions, you can use the resolutions
field in the package.json
file, which is supported by Yarn:
"resolutions": {
"@swc/core": "1.3.56"
},
or overrides
for >npm@8.3
"overrides": {
"@swc/core": "1.3.56"
},
Usage
Add the following configuration to your .swcrc
file:
{
"$schema": "https://json.schemastore.org/swcrc",
"jsc": {
"experimental": {
"plugins": [
[
"@lingui/swc-plugin",
{
// Optional
// Unlike the JS version this option must be passed as object only.
// Docs https://lingui.dev/ref/conf#runtimeconfigmodule
// "runtimeModules": {
// "i18n": ["@lingui/core", "i18n"],
// "trans": ["@lingui/react", "Trans"]
// }
}
]
]
}
}
}
If you use Next.js, add the following to your next.config.js
:
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
experimental: {
swcPlugins: [
[
"@lingui/swc-plugin",
{
// the same options as in .swcrc
},
],
],
},
};
module.exports = nextConfig;