You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.5 KiB
76 lines
1.5 KiB
module.exports = (api) => { |
|
const env = api.env(); |
|
|
|
const reactOptions = { |
|
development: false, |
|
runtime: 'automatic', |
|
}; |
|
|
|
const envOptions = { |
|
loose: true, |
|
modules: false, |
|
debug: false, |
|
include: [ |
|
'transform-numeric-separator', |
|
'transform-optional-chaining', |
|
'transform-nullish-coalescing-operator', |
|
'transform-class-properties', |
|
], |
|
}; |
|
|
|
const config = { |
|
presets: [ |
|
'@babel/preset-typescript', |
|
['@babel/react', reactOptions], |
|
['@babel/env', envOptions], |
|
], |
|
plugins: [ |
|
['formatjs'], |
|
'preval', |
|
], |
|
overrides: [ |
|
{ |
|
test: /tesseract\.js/, |
|
presets: [ |
|
['@babel/env', { ...envOptions, modules: 'commonjs' }], |
|
], |
|
}, |
|
], |
|
}; |
|
|
|
switch (env) { |
|
case 'production': |
|
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': |
|
reactOptions.development = true; |
|
envOptions.debug = true; |
|
break; |
|
case 'test': |
|
envOptions.modules = 'commonjs'; |
|
break; |
|
} |
|
|
|
return config; |
|
};
|
|
|