chinwagsocial/babel.config.js

81 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

2018-09-15 01:59:48 +10:00
module.exports = (api) => {
const env = api.env();
const reactOptions = {
development: false,
2023-05-23 18:52:27 +10:00
runtime: 'automatic',
};
2018-09-15 01:59:48 +10:00
const envOptions = {
useBuiltIns: "usage",
corejs: { version: "3.30" },
debug: false,
include: [
'transform-numeric-separator',
'transform-optional-chaining',
'transform-nullish-coalescing-operator',
'transform-class-properties',
],
2018-09-15 01:59:48 +10:00
};
const plugins = [
['formatjs'],
'preval',
];
2018-09-15 01:59:48 +10:00
switch (env) {
case 'production':
plugins.push(...[
2018-09-15 01:59:48 +10:00
'lodash',
[
'transform-react-remove-prop-types',
{
mode: 'remove',
removeImport: true,
additionalLibraries: [
'react-immutable-proptypes',
],
},
],
'@babel/transform-react-inline-elements',
[
'@babel/transform-runtime',
{
helpers: true,
regenerator: false,
useESModules: true,
},
],
]);
break;
2018-09-15 01:59:48 +10:00
case 'development':
reactOptions.development = true;
2018-09-15 01:59:48 +10:00
envOptions.debug = true;
// We need Babel to not inject polyfills in dev, as this breaks `preval` files
envOptions.useBuiltIns = false;
envOptions.corejs = undefined;
2018-09-15 01:59:48 +10:00
break;
}
const config = {
presets: [
'@babel/preset-typescript',
['@babel/react', reactOptions],
['@babel/env', envOptions],
],
plugins,
overrides: [
{
test: [/tesseract\.js/, /fuzzysort\.js/],
presets: [
['@babel/env', { ...envOptions, modules: 'commonjs' }],
],
},
],
};
2018-09-15 01:59:48 +10:00
return config;
};