babel.config.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /* eslint-env node */
  2. import {TransformOptions} from '@babel/core';
  3. const config: TransformOptions = {
  4. presets: [
  5. [
  6. '@babel/preset-react',
  7. {
  8. runtime: 'automatic',
  9. importSource: '@emotion/react',
  10. },
  11. ],
  12. [
  13. '@babel/preset-env',
  14. {
  15. useBuiltIns: 'usage',
  16. corejs: '3.27',
  17. },
  18. ],
  19. '@babel/preset-typescript',
  20. ],
  21. overrides: [],
  22. plugins: [
  23. '@emotion/babel-plugin',
  24. '@babel/plugin-transform-runtime',
  25. ['@babel/plugin-proposal-decorators', {version: 'legacy'}],
  26. ['@babel/plugin-proposal-class-properties', {loose: true}],
  27. ],
  28. env: {
  29. production: {
  30. plugins: [
  31. [
  32. 'transform-react-remove-prop-types',
  33. {
  34. mode: 'remove', // remove from bundle
  35. removeImport: true, // removes `prop-types` import statements
  36. classNameMatchers: [
  37. 'SelectField',
  38. 'FormField',
  39. 'DeprecatedAsyncComponent',
  40. 'DeprecatedAsyncView',
  41. ],
  42. additionalLibraries: [/app\/sentryTypes$/],
  43. },
  44. ],
  45. ['babel-plugin-add-react-displayname'],
  46. ],
  47. },
  48. development: {
  49. plugins: [
  50. '@emotion/babel-plugin',
  51. '@babel/plugin-transform-react-jsx-source',
  52. ...(process.env.SENTRY_UI_HOT_RELOAD ? ['react-refresh/babel'] : []),
  53. ],
  54. },
  55. test: {
  56. sourceMaps: process.env.CI ? false : true,
  57. plugins: [
  58. // Required, see https://github.com/facebook/jest/issues/9430
  59. 'dynamic-import-node',
  60. // Disable emotion sourcemaps in tests
  61. // Since emotion spends lots of time parsing and inserting sourcemaps
  62. [
  63. '@emotion/babel-plugin',
  64. {
  65. sourceMap: false,
  66. },
  67. ],
  68. ],
  69. },
  70. },
  71. };
  72. export default config;