-
Notifications
You must be signed in to change notification settings - Fork 0
/
.babelrc
52 lines (48 loc) · 2.34 KB
/
.babelrc
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
{
"presets": [
["@babel/env", {
/*
Modules option can let babel transform import '...' statements into other ways of acquiring the module (commonjs, amd, etc)
The default is transform to CommonJs (the NodeJs module format prior to native javascript modules using import/export)
For now we need import statements to remain as they are, so the transform-es2015-modules-commonjs-simple plugin (see below) can do its work.
Later we should be able to disable import/module transforming entirely (both modules = false here and removing the plugin)
and allow webpack to process all imports.
*/
"modules": false,
/*
Scans our code and injects the necessary polyfills (promise, async, fetch, etc...)
based on our browser targets and used language features.
NOTE: the bundle still needs to import '@babel/polyfill' at the entry point to enable the polyfills, see utils/enable-polyfills.ts,
which is prepended to all output files through our webpack config (webpack.config.(prod|dev).js)
*/
"useBuiltIns": "entry",
"targets": {
"browsers": [
">0.25%",
"not ie 11",
"not op_mini all"
]
},
// "debug": true
}],
],
"plugins": [
/*
This is super useful when on breakpoints - prevents imported variable/function names from being mangled by webpack.
It does however require transforming modules (and import statements) into CommonJs format instead of native es6 import/exports.
Note that this transforming of imports needs to be performed by this plugin entirely, we need to disable all other import rewriting/transpile steps
- by typescript: see tsconfig.json compilerOptions.module option
- by other stages in the babel transformation process: see modules = false in preset-env settings above.
Eventually once this is solved, or reverse-sourcemapping (mapping pretty name in browser console to mangled name in the eval)
makes it into browsers, we can start using es6 import/exports again
See these issues for progress on the name-mangling part:
https://github.com/babel/babel/issues/2596
https://github.com/webpack/webpack/issues/3957
https://bugs.chromium.org/p/chromium/issues/detail?id=327092
See: https://github.com/jamietre/babel-plugin-transform-es2015-modules-commonjs-simple#readme
*/
["transform-es2015-modules-commonjs-simple", {
"noMangle": true
}]
]
}