-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path.babelrc.js
77 lines (65 loc) · 2.39 KB
/
.babelrc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Use this file rather than .babelrc for dynamic config (babel 7)
// https://babeljs.io/docs/en/babel-preset-env
const defaultBabelPresetEnvConfig = {
modules: false, // keep ES6 modules, webpack will take care of conversion if necessary
useBuiltIns: 'usage',
corejs: 3,
debug: process.env.DEBUG_BUILD === 'true'
}
// Modern browser bundle, for minimal size
const evergreenBabelPresetEnvConfig = Object.assign({}, defaultBabelPresetEnvConfig, {
targets: '> 0.5%, not ie 11, not op_mini all, not android <= 5, not samsung <= 5'
})
const defaultBrowserTargets = 'last 2 versions, Firefox ESR, > 0.2%'
// Supports most browsers used globally, with heavier bundle
const browserBabelPresetEnvConfig = Object.assign({}, defaultBabelPresetEnvConfig, {
// This currently includes IE11 and popular but feature-limited browsers such as Opera Mini
targets: defaultBrowserTargets
})
// ES6 modules, but content is still transpiled to ES5 for wide browser support
const modulesBabelPresetEnvConfig = Object.assign({}, defaultBabelPresetEnvConfig, {
// no targets
targets: defaultBrowserTargets,
})
// Node
const nodeBabelPresetEnvConfig = Object.assign({}, defaultBabelPresetEnvConfig, {
targets: 'node >= 10.18' // EOL: 2021-04-30
})
// Tests need to transform modules
const testBabelPresetEnvConfig = Object.assign({}, defaultBabelPresetEnvConfig, {
targets: `${nodeBabelPresetEnvConfig.targets}, ${browserBabelPresetEnvConfig.targets}`,
modules: 'commonjs'
})
const plugins = [
'@babel/plugin-proposal-object-rest-spread',
'lodash', // https://github.com/lodash/babel-plugin-lodash
['@babel/plugin-transform-runtime',
{
"corejs": false,
"helpers": true,
"regenerator": true,
"version": "7.8.3"
}
],
['inline-replace-variables', {
// Inject version number into code
__VERSION__: require('./package.json').version
}]
]
function getBabelConfig (envName) {
let preset
if (envName === 'evergreen') preset = evergreenBabelPresetEnvConfig
else if (envName === 'browser') preset = browserBabelPresetEnvConfig
else if (envName === 'modules') preset = modulesBabelPresetEnvConfig
else if (envName === 'node') preset = nodeBabelPresetEnvConfig
else if (envName === 'test') preset = testBabelPresetEnvConfig
return {
plugins,
presets: [
['@babel/preset-env', preset]
]
}
}
module.exports = function (api) {
return getBabelConfig(api.env())
}