@lingui/swc-plugin
Version:
A SWC Plugin for LinguiJS
34 lines (33 loc) • 1.1 kB
JavaScript
import { getConfig } from "@lingui/conf";
/**
* Loads the Lingui config, maps relevant options to the SWC plugin format,
* and returns a ready-to-use `["@lingui/swc-plugin", options]` tuple.
*
* @example
* ```js
* // next.config.js
* const nextConfig = {
* experimental: {
* swcPlugins: [linguiMacroSwcPlugin()],
* },
* };
* ```
*
* @param overrides - Plugin options merged over values derived from the Lingui config.
* @param configOptions - Controls how the Lingui config is discovered or loaded.
*/
export function linguiMacroSwcPlugin(overrides, configOptions = {}) {
const config = getConfig(configOptions);
const macroOptions = {
corePackage: config.macro.corePackage,
jsxPackage: config.macro.jsxPackage,
jsxPlaceholderAttribute: config.macro.jsxPlaceholderAttribute,
jsxPlaceholderDefaults: config.macro.jsxPlaceholderDefaults,
...overrides,
runtimeModules: {
...config.runtimeConfigModule,
...overrides?.runtimeModules,
},
};
return ["@lingui/swc-plugin", macroOptions];
}