-
Notifications
You must be signed in to change notification settings - Fork 10.3k
/
Copy pathindex.js
74 lines (67 loc) · 1.43 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
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
const path = require(`path`)
const r = m => require.resolve(m)
const loadCachedConfig = () => {
let pluginBabelConfig = {}
if (process.env.NODE_ENV !== `test`) {
pluginBabelConfig = require(path.join(
process.cwd(),
`./.cache/babelState.json`
))
}
return pluginBabelConfig
}
function preset(context, options = {}) {
let { targets = null } = options
const pluginBabelConfig = loadCachedConfig()
const stage = process.env.GATSBY_BUILD_STAGE || `test`
if (!targets) {
if (stage === `build-html`) {
targets = {
node: `current`,
}
} else {
targets = {
browsers: pluginBabelConfig.browserslist,
}
}
}
return {
presets: [
[
r(`@babel/preset-env`),
{
loose: true,
modules: false,
useBuiltIns: `usage`,
targets,
},
],
[
r(`@babel/preset-react`),
{
useBuiltIns: true,
pragma: `React.createElement`,
development: stage === `develop`,
},
],
],
plugins: [
[
r(`@babel/plugin-proposal-class-properties`),
{
loose: true,
},
],
r(`babel-plugin-macros`),
r(`@babel/plugin-syntax-dynamic-import`),
[
r(`@babel/plugin-transform-runtime`),
{
helpers: true,
regenerator: true,
},
],
],
}
}
module.exports = preset