babel.config.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*eslint-env node*/
  2. module.exports = {
  3. presets: [
  4. [
  5. '@babel/preset-react',
  6. {
  7. runtime: 'automatic',
  8. importSource: '@emotion/react',
  9. },
  10. ],
  11. [
  12. '@babel/preset-env',
  13. {
  14. useBuiltIns: 'usage',
  15. corejs: '3.11',
  16. },
  17. ],
  18. '@babel/preset-typescript',
  19. ],
  20. plugins: [
  21. '@emotion/babel-plugin',
  22. '@babel/plugin-transform-runtime',
  23. // NOTE: The order of the decorator and class-property plugins is important
  24. // here. Decorators must be processed first before class properties, see:
  25. // https://babeljs.io/docs/en/plugins#plugin-ordering
  26. ['@babel/plugin-proposal-decorators', {legacy: true}],
  27. '@babel/plugin-proposal-class-properties',
  28. ],
  29. env: {
  30. production: {
  31. plugins: [
  32. [
  33. 'transform-react-remove-prop-types',
  34. {
  35. mode: 'remove', // remove from bundle
  36. removeImport: true, // removes `prop-types` import statements
  37. classNameMatchers: [
  38. 'SelectField',
  39. 'FormField',
  40. 'AsyncComponent',
  41. 'AsyncView',
  42. ],
  43. additionalLibraries: [/app\/sentryTypes$/],
  44. },
  45. ],
  46. ['babel-plugin-add-react-displayname'],
  47. ],
  48. },
  49. development: {
  50. plugins: [
  51. '@emotion/babel-plugin',
  52. '@babel/plugin-transform-react-jsx-source',
  53. !!process.env.SENTRY_UI_HOT_RELOAD ? 'react-refresh/babel' : null,
  54. ].filter(Boolean),
  55. },
  56. test: {
  57. // Required, see https://github.com/facebook/jest/issues/9430
  58. plugins: ['dynamic-import-node'],
  59. },
  60. },
  61. };