module.exports = function getBabelConfig(options = {}) { return { cacheDirectory: true, babelrc: false, // Note: order is top-to-bottom and/or left-to-right // Note: order is bottom-to-top and/or right-to-left presets: [ [ '@babel/preset-env', { bugfixes: true, browserslistEnv: process.env.BABEL_ENV || options.BABEL_ENV || 'production', useBuiltIns: 'entry', corejs: '3.10', }, ], [ '@babel/preset-typescript', { allowNamespaces: true, allowDeclareFields: true, }, ], [ '@babel/preset-react', { runtime: 'automatic', }, ], ], plugins: [ [ '@babel/plugin-transform-typescript', { allowNamespaces: true, allowDeclareFields: true, }, ], ['@babel/plugin-proposal-class-properties', { loose: true }], ['@babel/plugin-proposal-private-methods', { loose: true }], ['@babel/plugin-proposal-object-rest-spread', { loose: true }], '@babel/plugin-transform-react-constant-elements', '@babel/plugin-proposal-nullish-coalescing-operator', '@babel/plugin-proposal-optional-chaining', '@babel/plugin-syntax-dynamic-import', // needed for `() => import()` in routes.ts 'angularjs-annotate', ], }; };