You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.8 KiB
79 lines
1.8 KiB
module.exports = function(api) { |
|
var validEnv = ['development', 'test', 'production'] |
|
var currentEnv = api.env() |
|
var isDevelopmentEnv = api.env('development') |
|
var isProductionEnv = api.env('production') |
|
var isTestEnv = api.env('test') |
|
|
|
if (!validEnv.includes(currentEnv)) { |
|
throw new Error( |
|
'Please specify a valid `NODE_ENV` or ' + |
|
'`BABEL_ENV` environment variables. Valid values are "development", ' + |
|
'"test", and "production". Instead, received: ' + |
|
JSON.stringify(currentEnv) + |
|
'.' |
|
) |
|
} |
|
|
|
return { |
|
presets: [ |
|
isTestEnv && [ |
|
'@babel/preset-env', |
|
{ |
|
targets: { |
|
node: 'current', |
|
browsers: [ |
|
'ie >= 10' |
|
] |
|
} |
|
} |
|
], |
|
(isProductionEnv || isDevelopmentEnv) && [ |
|
'@babel/preset-env', |
|
{ |
|
forceAllTransforms: true, |
|
useBuiltIns: 'entry', |
|
corejs: 3, |
|
modules: false, |
|
exclude: ['transform-typeof-symbol'], |
|
targets: { |
|
node: 'current', |
|
browsers: [ |
|
'ie >= 10' |
|
] |
|
} |
|
} |
|
] |
|
].filter(Boolean), |
|
plugins: [ |
|
'babel-plugin-macros', |
|
'@babel/plugin-syntax-dynamic-import', |
|
isTestEnv && 'babel-plugin-dynamic-import-node', |
|
'@babel/plugin-transform-destructuring', |
|
[ |
|
'@babel/plugin-proposal-class-properties', |
|
{ |
|
loose: true |
|
} |
|
], |
|
[ |
|
'@babel/plugin-proposal-object-rest-spread', |
|
{ |
|
useBuiltIns: true |
|
} |
|
], |
|
[ |
|
'@babel/plugin-transform-runtime', |
|
{ |
|
helpers: false |
|
} |
|
], |
|
[ |
|
'@babel/plugin-transform-regenerator', |
|
{ |
|
async: false |
|
} |
|
] |
|
].filter(Boolean) |
|
} |
|
}
|
|
|