-
Notifications
You must be signed in to change notification settings - Fork 0
/
babel.config.cjs
46 lines (43 loc) · 1.47 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
module.exports = function babel (api) {
const currentEnv = api.env(),
isDevelopmentEnv = api.env("development"),
isProductionEnv = api.env("production"),
isTestEnv = api.env("test"),
validEnv = ["development", "test", "production"];
if (!validEnv.includes(currentEnv)) {
throw new Error("Please specify a valid `NODE_ENV` or `BABEL_ENV`" +
"environment variables: `development`, `test`, or `production`.");
}
return {
"plugins": [
"@babel/plugin-syntax-dynamic-import",
isTestEnv && "babel-plugin-dynamic-import-node",
isTestEnv && "babel-plugin-istanbul",
"@babel/plugin-transform-destructuring",
[
"@babel/plugin-transform-class-properties",
{ "loose": true }
],
[
"@babel/plugin-transform-object-rest-spread",
{ "useBuiltIns": true }
],
["@babel/plugin-transform-private-property-in-object", { "loose": true }],
["@babel/plugin-transform-private-methods", { "loose": true }],
["@babel/plugin-transform-regenerator", { "async": false }]
].filter(Boolean),
"presets": [
isTestEnv && ["@babel/preset-env", { "targets": { "node": "current" } }],
(isProductionEnv || isDevelopmentEnv) && [
"@babel/preset-env",
{
"corejs": 3,
"exclude": ["transform-typeof-symbol"],
"forceAllTransforms": true,
"modules": false,
"useBuiltIns": "entry"
}
]
].filter(Boolean)
};
};