babel.config.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. module.exports = (api) => {
  2. const env = api.env();
  3. const envOptions = {
  4. debug: false,
  5. loose: true,
  6. modules: false,
  7. };
  8. const config = {
  9. presets: [
  10. '@babel/react',
  11. ['@babel/env', envOptions],
  12. ],
  13. plugins: [
  14. '@babel/syntax-dynamic-import',
  15. ['@babel/proposal-object-rest-spread', { useBuiltIns: true }],
  16. ['@babel/proposal-decorators', { legacy: true }],
  17. '@babel/proposal-class-properties',
  18. ['react-intl', { messagesDir: './build/messages/' }],
  19. 'preval',
  20. ],
  21. };
  22. switch (env) {
  23. case 'production':
  24. envOptions.debug = false;
  25. config.plugins.push(...[
  26. 'lodash',
  27. [
  28. 'transform-react-remove-prop-types',
  29. {
  30. mode: 'remove',
  31. removeImport: true,
  32. additionalLibraries: [
  33. 'react-immutable-proptypes',
  34. ],
  35. },
  36. ],
  37. '@babel/transform-react-inline-elements',
  38. [
  39. '@babel/transform-runtime',
  40. {
  41. helpers: true,
  42. regenerator: false,
  43. useESModules: true,
  44. },
  45. ],
  46. ]);
  47. break;
  48. case 'development':
  49. envOptions.debug = true;
  50. config.plugins.push(...[
  51. '@babel/transform-react-jsx-source',
  52. '@babel/transform-react-jsx-self',
  53. ]);
  54. break;
  55. case 'test':
  56. envOptions.modules = 'commonjs';
  57. break;
  58. }
  59. return config;
  60. };