module.exports = (api) => { const env = api.env(); const envOptions = { debug: false, loose: true, modules: false, }; const config = { presets: [ '@babel/react', ['@babel/env', envOptions], ], plugins: [ '@babel/syntax-dynamic-import', ['@babel/proposal-object-rest-spread', { useBuiltIns: true }], ['@babel/proposal-decorators', { legacy: true }], '@babel/proposal-class-properties', ['react-intl', { messagesDir: './build/messages' }], 'preval', ], }; switch (env) { case 'production': envOptions.debug = false; config.plugins.push(...[ '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; case 'development': envOptions.debug = true; config.plugins.push(...[ '@babel/transform-react-jsx-source', '@babel/transform-react-jsx-self', ]); break; case 'test': envOptions.modules = 'commonjs'; break; } return config; };