UNPKG

@lingui/cli

Version:

Lingui CLI to extract messages, compile catalogs, and manage translation workflows

39 lines (38 loc) 1.49 kB
import { transformAsync } from "@babel/core"; import fs from "fs"; import path from "path"; import { babelRe, getBabelParserOptions } from "../api/extractors/babel.js"; import linguiMacroPlugin from "@lingui/babel-plugin-lingui-macro"; export const pluginLinguiMacro = (options) => ({ name: "linguiMacro", setup(build) { build.onLoad({ filter: babelRe, namespace: "" }, async (args) => { const filename = path.relative(process.cwd(), args.path); const contents = await fs.promises.readFile(args.path, "utf8"); const hasMacroRe = /from ["']@lingui(\/.+)?\/macro["']/g; if (!hasMacroRe.test(contents)) { // let esbuild process file as usual return undefined; } const result = await transformAsync(contents, { babelrc: false, configFile: false, filename: filename, sourceMaps: "inline", parserOpts: { plugins: getBabelParserOptions(filename, {}), }, plugins: [ [ linguiMacroPlugin, { descriptorFields: "all", linguiConfig: options.linguiConfig, }, ], ], }); return { contents: result.code, loader: "tsx" }; }); }, });