-
-
Notifications
You must be signed in to change notification settings - Fork 375
/
Copy pathindex.js
46 lines (42 loc) · 1.29 KB
/
index.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
const ENV = process.env.BABEL_ENV || process.env.NODE_ENV;
// @see https://jamie.build/last-2-versions
const browsers = [
'>0.25%',
'not ie 11',
'not op_mini all'
];
module.exports = function(env, options = {}) {
const isProd = env && env.production || ENV === 'production';
if (ENV === 'test') {
options.modules = 'commonjs';
}
return {
presets: [
[require.resolve('@babel/preset-env'), {
loose: true,
modules: options.modules || false,
targets: {
browsers: options.browsers || browsers
},
exclude: [
'transform-regenerator',
'transform-typeof-symbol'
]
}]
],
plugins: [
require.resolve('@babel/plugin-syntax-dynamic-import'),
require.resolve('@babel/plugin-transform-object-assign'),
[require.resolve('@babel/plugin-proposal-decorators'), { legacy: true }],
require.resolve('@babel/plugin-proposal-class-properties'),
require.resolve('@babel/plugin-proposal-object-rest-spread'),
require.resolve('@babel/plugin-transform-react-constant-elements'),
isProd &&
require.resolve('babel-plugin-transform-react-remove-prop-types'),
[require.resolve('@babel/plugin-transform-react-jsx'), { pragma: 'h' }],
require.resolve('babel-plugin-macros'),
!isProd &&
require.resolve('react-hot-loader/babel'),
].filter(Boolean),
};
};