66 lines
1.3 KiB
JavaScript
66 lines
1.3 KiB
JavaScript
|
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;
|
||
|
};
|
||
|
|