UNPKG

react-scripts-intlayer

Version:

Integrate Intlayer with Create React App using custom React scripts for internationalization i18n and advanced Webpack configurations

79 lines 2.52 kB
import "./chunk-ZD7AOCMD.mjs"; import { ESMxCJSRequire, getAlias, getConfiguration } from "@intlayer/config"; import { IntlayerPlugin as IntlayerWebpackPlugin } from "@intlayer/webpack"; import { join, relative } from "path"; const intlayerConfig = getConfiguration(); const overrideWebpackConfig = ({ webpackConfig }) => { webpackConfig.externals = { ...typeof webpackConfig.externals === "object" ? webpackConfig.externals : {}, esbuild: "esbuild" // keep only esbuild external }; delete webpackConfig.externals.module; delete webpackConfig.externals.fs; delete webpackConfig.externals.path; delete webpackConfig.externals.vm; webpackConfig.module.rules.push({ test: /\.node$/, use: "node-loader" }); return webpackConfig; }; const overrideCracoConfig = ({ cracoConfig }) => { const { mainDir, baseDir, configDir } = intlayerConfig.content; const dictionariesPath = join(mainDir, "dictionaries.mjs"); const relativeDictionariesPath = relative(baseDir, dictionariesPath); const configurationPath = join(configDir, "configuration.json"); const relativeConfigurationPath = relative(baseDir, configurationPath); return { ...cracoConfig, webpack: { ...cracoConfig.webpack, plugins: { ...cracoConfig.webpack?.plugins, // Ensure we actually add IntlayerWebpackPlugin add: [ ...cracoConfig.webpack?.plugins?.add ?? [], new IntlayerWebpackPlugin() ] }, configure: { ...cracoConfig.webpack?.configure ?? {}, resolve: { ...cracoConfig.webpack?.configure?.resolve ?? {}, // 3) Provide browser fallbacks so these modules won’t error out in the browser. fallback: { ...cracoConfig.webpack?.configure?.resolve?.fallback ?? {}, process: ESMxCJSRequire.resolve("process/browser"), fs: false, module: false, path: false, vm: false } } }, // 4) Alias @intlayer/dictionaries-entry so it no longer tries to use the ESM that depends on `fs`, etc. alias: { ...cracoConfig.webpack?.alias, ...getAlias({ configuration: intlayerConfig, formatter: (value) => resolve(value) }) } } }; }; const intlayerCracoPlugin = { overrideCracoConfig, overrideWebpackConfig }; export { intlayerCracoPlugin, overrideCracoConfig, overrideWebpackConfig }; //# sourceMappingURL=intlayerCracoPlugin.mjs.map