babel.config.js 1.7 KB

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