package.cjs.configs.babel.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of neeto-commons-frontend Show documentation
Show all versions of neeto-commons-frontend Show documentation
A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.
const { TRANSFORM_RULES } = require("./constants");
// eslint-disable-next-line @bigbinary/neeto/no-dangling-constants
const VALID_ENVIRONMENTS = ["development", "test", "production"];
module.exports = function (api) {
const currentEnv = api.env();
const isDevelopmentEnv = api.env("development");
const isProductionEnv = api.env("production");
const isTestEnv = api.env("test");
if (!VALID_ENVIRONMENTS.includes(currentEnv)) {
throw new Error(
"Please specify a valid `NODE_ENV` or `BABEL_ENV` environment variables. " +
'Valid values are "development", "test", and "production". ' +
`Instead, received: ${JSON.stringify(currentEnv)}.`
);
}
return {
presets: [
isTestEnv
? [
"@babel/preset-env",
{ targets: { node: "current" }, modules: "commonjs" },
]
: [
"@babel/preset-env",
{
forceAllTransforms: isProductionEnv,
useBuiltIns: "entry",
corejs: "3.27.0",
modules: false,
},
],
[
"@babel/preset-react",
{ development: isDevelopmentEnv || isTestEnv, runtime: "automatic" },
],
"@bigbinary/neeto",
].filter(Boolean),
plugins: [
"preval",
"babel-plugin-macros",
"@babel/plugin-transform-runtime",
isTestEnv
? "babel-plugin-dynamic-import-node" // tests run in node environment
: "@babel/plugin-syntax-dynamic-import",
isProductionEnv && [
"babel-plugin-transform-react-remove-prop-types",
{ removeImport: true },
],
...TRANSFORM_RULES,
].filter(Boolean),
};
};