-
Notifications
You must be signed in to change notification settings - Fork 1
/
babel.config.js
88 lines (86 loc) · 2.17 KB
/
babel.config.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
78
79
80
81
82
83
84
85
86
87
88
const presets = ['@babel/preset-react', '@babel/preset-typescript', 'patronum/babel-preset'];
const common = {
presets,
plugins: [
['effector/babel-plugin', { factories: ['src/contract', 'src/logical'] }],
['@babel/plugin-proposal-class-properties', { loose: true }],
'@babel/plugin-proposal-object-rest-spread',
'@babel/plugin-proposal-optional-chaining',
'@babel/plugin-proposal-nullish-coalescing-operator',
'@babel/plugin-transform-react-constant-elements',
],
overrides: [
{
test(filename, { envName }) {
return envName === 'test';
},
plugins: ['@babel/plugin-transform-runtime'],
presets: [
[
'@babel/preset-env',
{
loose: true,
useBuiltIns: 'entry',
corejs: 3,
modules: 'commonjs',
shippedProposals: true,
targets: {
node: '10',
browsers: [
'last 2 Chrome versions',
'last 2 Firefox versions',
'last 2 Safari versions',
'last 1 Edge versions',
],
},
},
],
],
},
{
test(_filename, { envName }) {
return envName !== 'test';
},
presets: [
[
'@babel/preset-env',
{
loose: true,
useBuiltIns: 'entry',
corejs: 3,
modules: false,
shippedProposals: true,
targets: {
node: '10',
browsers: [
'last 2 Chrome versions',
'last 2 Firefox versions',
'last 2 Safari versions',
'last 1 Edge versions',
],
},
},
],
],
},
{
test(filename) {
return filename?.endsWith('.tsx') || filename?.endsWith('.ts');
},
presets: [
[
'@babel/preset-typescript',
{
isTSX: true,
allExtensions: true,
},
],
],
},
],
sourceMaps: true,
};
module.exports = (api) => {
if (api && api.cache && api.cache.never) api.cache.never();
return common;
};