All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.configs.babel.js Maven / Gradle / Ivy

Go to download

A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.

There is a newer version: 4.12.3
Show newest version
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),
  };
};




© 2015 - 2024 Weber Informatics LLC | Privacy Policy