UNPKG

lingui-swc-plugin

Version:
108 lines (81 loc) 3.11 kB
# <div align="center">A SWC Plugin For LinguiJS</div> <div align="center"> A Rust versions of [LinguiJS Macro](https://lingui.dev/ref/macro) [<img src="https://img.shields.io/badge/beta-yellow"/>](https://github.com/lingui/swc-plugin) [![npm](https://img.shields.io/npm/v/lingui-swc-plugin?logo=npm&cacheSeconds=1800)](https://www.npmjs.com/package/lingui-swc-plugin) [![npm](https://img.shields.io/npm/dt/lingui-swc-plugin?cacheSeconds=500)](https://www.npmjs.com/package/lingui-swc-plugin) [![GitHub](https://img.shields.io/github/license/lingui/swc-plugin)](https://github.com/lingui/swc-plugin/blob/main/LICENSE) </div> # lingui-swc-plugin `lingui-swc-plugin` is modified version of [`@lingui/swc-plugin`](https://www.npmjs.com/package/@lingui/swc-plugin)in which `defineMessage` macro returns string instead of MessageDescriptor. (Migration purpose) ## Installation Install plugin: ```bash npm install --save-dev @lingui/swc-plugin@npm:lingui-swc-plugin # or yarn add -D @lingui/swc-plugin@npm:lingui-swc-plugin ``` You still need to install `@lingui/macro` for typings support: ```bash npm install @lingui/macro@npm:lingui-macro # or yarn add @lingui/macro@npm:lingui-macro ``` ## Usage `.swcrc` https://swc.rs/docs/configuration/swcrc ```json5 { $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"] // } }, ], ], }, }, } ``` Or Next JS Usage: `next.config.js` ```js /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, experimental: { swcPlugins: [ [ "@lingui/swc-plugin", { // the same options as in .swcrc }, ], ], }, }; module.exports = nextConfig; ``` > **Note** > Consult with full working example for NextJS in the `/examples` folder in this repo. ## Compatibility SWC Plugin support is still experimental. They do not guarantee a semver backwards compatibility between different `swc-core` versions. So you need to select an appropriate version of the plugin to match compatible `swc_core` using a https://plugins.swc.rs/. > **Note** > next `v13.2.4` ~ `v13.3.1` cannot execute SWC Wasm plugins, due to a [bug of next-swc](https://github.com/vercel/next.js/issues/46989#issuecomment-1486989081). > > next `v13.4.3` ~ `v13.4.5-canary.7` cannot execute SWC Wasm plugins, due to [missing filesystem cache](https://github.com/vercel/next.js/pull/50651). - Version `0.1.0` ~ `0.*` compatible with `@lingui/core@3.*` - Version `4.*` compatible with `@lingui/core@4.*` - Version `5.*` compatible with `@lingui/core@5.*` ## License The project is licensed under the [MIT](https://github.com/lingui/swc-plugin/blob/main/LICENSE) license.