babel.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {srcPath, require} from './paths.ts';
  2. const isProduction = process.env.NODE_ENV === 'production';
  3. const isDev = !isProduction;
  4. export default function() {
  5. return {
  6. test: /\.(js|jsx|ts|tsx|mjs)$/,
  7. include: srcPath,
  8. use: [
  9. require.resolve('thread-loader'),
  10. {
  11. loader: require.resolve('babel-loader'),
  12. options: {
  13. presets: [
  14. [
  15. require.resolve('@babel/preset-env'),
  16. {
  17. useBuiltIns: 'entry',
  18. corejs: 3,
  19. exclude: ['transform-typeof-symbol'],
  20. },
  21. ],
  22. [
  23. require.resolve('@babel/preset-react'),
  24. {
  25. runtime: 'automatic',
  26. development: isDev,
  27. },
  28. ],
  29. require.resolve('@babel/preset-typescript'),
  30. ],
  31. plugins: [
  32. [
  33. require.resolve('@babel/plugin-transform-runtime'),
  34. {
  35. corejs: false,
  36. helpers: true,
  37. regenerator: true,
  38. useESModules: true,
  39. },
  40. ],
  41. !isDev && [
  42. require.resolve('react-remove-properties'),
  43. {
  44. properties: ['data-testid'],
  45. },
  46. ],
  47. isDev && require.resolve('react-refresh/babel'),
  48. ].filter(Boolean),
  49. compact: isProduction,
  50. },
  51. },
  52. ].filter(Boolean),
  53. };
  54. }