-
Notifications
You must be signed in to change notification settings - Fork 0
/
babel.config.cjs
87 lines (75 loc) · 1.37 KB
/
babel.config.cjs
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
const { TARGET } = process.env;
const validTargets = [
'module',
'browser',
'node',
'module-browser',
'module-node',
];
if (!validTargets.includes(TARGET)) {
throw new Error(
`Invalid process.env.TARGET "${TARGET}", expected one of ${validTargets}`
);
}
const KIND = TARGET.includes('browser') ? 'Browser' : 'Server';
const KIND_INVERT = KIND === 'browser' ? 'Server' : 'Browser';
const browserConfig = {
useBuiltIns: 'entry',
corejs: '3.22',
targets: {
chrome: '58',
ie: '11',
},
};
const nodeConfig = {
targets: {
node: '14',
},
};
const envConfig = {
browser: {
...browserConfig,
},
'module-browser': {
...browserConfig,
modules: false,
targets: {
...browserConfig.targets,
esmodules: true,
},
},
node: {
...nodeConfig,
},
'module-node': {
...nodeConfig,
modules: false,
targets: {
...nodeConfig.targets,
esmodules: true,
},
},
}[TARGET];
module.exports = function (api) {
api.cache(true);
const presets = [
'@babel/preset-typescript', //
['@babel/preset-env', envConfig],
];
const plugins = [
[
require('@powership/babel-plugins').StripBlocksPlugin,
{
magicComment: `@only${KIND_INVERT}`,
},
],
];
return {
presets,
plugins,
ignore: [
/node_modules/,
'**/__tests__', //
],
};
};