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
JavaScript
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