UNPKG

react-scripts-intlayer

Version:

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

77 lines 2.54 kB
import "./chunk-ZD7AOCMD.mjs"; import { resolve, relative, join } from "path"; import { getConfiguration, ESMxCJSRequire } from "@intlayer/config"; import { IntlayerPlugin as IntlayerWebpackPlugin } from "@intlayer/webpack"; 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, "@intlayer/dictionaries-entry": resolve(relativeDictionariesPath), "@intlayer/config/built": resolve(relativeConfigurationPath) } } }; }; const intlayerCracoPlugin = { overrideCracoConfig, overrideWebpackConfig }; export { intlayerCracoPlugin, overrideCracoConfig, overrideWebpackConfig }; //# sourceMappingURL=intlayerCracoPlugin.mjs.map