1 | /**
|
2 | * Babel config is stored in `package.json` so that
|
3 | * Jest can read it.
|
4 | */
|
5 | const babelConfig = require('../package.json').babel;
|
6 |
|
7 | function resolve(presetsOrPlugins) {
|
8 | return presetsOrPlugins.map(item => {
|
9 | return typeof item === 'string'
|
10 | ? require.resolve(item)
|
11 | : [require.resolve(item[0]), item[1]];
|
12 | });
|
13 | }
|
14 |
|
15 | /**
|
16 | * To prevent `babel-register` from reading foreign Babel
|
17 | * configs, `babelrc` has to be set to `false` and Haul's
|
18 | * Babel config inlined into `babel-register`'s options.
|
19 | *
|
20 | * Also presets and plugins need to be resolved to
|
21 | * Haul's `node_modules` directory, otherwise Babel would
|
22 | * search from them in project's `node_modules`.
|
23 | */
|
24 | require('@babel/register')(
|
25 | Object.assign(
|
26 | {
|
27 | // Use a PNPM-compatible search pattern for node_modules.
|
28 | ignore: [/node_modules(?!.*[/\\]haul)/],
|
29 | retainLines: true,
|
30 | sourceMaps: 'inline',
|
31 | babelrc: false,
|
32 | },
|
33 | babelConfig,
|
34 | {
|
35 | presets: resolve(babelConfig.presets),
|
36 | plugins: resolve(babelConfig.plugins),
|
37 | }
|
38 | )
|
39 | );
|