babel.config.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. module.exports = function(api) {
  2. var validEnv = ['development', 'test', 'production']
  3. var currentEnv = api.env()
  4. var isDevelopmentEnv = api.env('development')
  5. var isProductionEnv = api.env('production')
  6. var isTestEnv = api.env('test')
  7. if (!validEnv.includes(currentEnv)) {
  8. throw new Error(
  9. 'Please specify a valid `NODE_ENV` or ' +
  10. '`BABEL_ENV` environment variables. Valid values are "development", ' +
  11. '"test", and "production". Instead, received: ' +
  12. JSON.stringify(currentEnv) +
  13. '.'
  14. )
  15. }
  16. return {
  17. presets: [
  18. isTestEnv && [
  19. '@babel/preset-env',
  20. {
  21. targets: {
  22. node: 'current'
  23. }
  24. }
  25. ],
  26. (isProductionEnv || isDevelopmentEnv) && [
  27. '@babel/preset-env',
  28. {
  29. forceAllTransforms: true,
  30. useBuiltIns: 'entry',
  31. corejs: 3,
  32. modules: false,
  33. exclude: ['transform-typeof-symbol']
  34. }
  35. ]
  36. ].filter(Boolean),
  37. plugins: [
  38. 'babel-plugin-macros',
  39. '@babel/plugin-syntax-dynamic-import',
  40. isTestEnv && 'babel-plugin-dynamic-import-node',
  41. '@babel/plugin-transform-destructuring',
  42. [
  43. '@babel/plugin-proposal-class-properties',
  44. {
  45. loose: true
  46. }
  47. ],
  48. [
  49. '@babel/plugin-proposal-object-rest-spread',
  50. {
  51. useBuiltIns: true
  52. }
  53. ],
  54. [
  55. '@babel/plugin-transform-runtime',
  56. {
  57. helpers: false
  58. }
  59. ],
  60. [
  61. '@babel/plugin-transform-regenerator',
  62. {
  63. async: false
  64. }
  65. ]
  66. ].filter(Boolean)
  67. }
  68. }