@@ -40,6 +40,7 @@ If you prefer to create a ${chalk.yellow('.eslintrc.js')} file by yourself, here
4040
4141${ chalk . yellow ( `// .eslintrc.js
4242module.exports = {
43+ root: true,
4344 parser: '@babel/eslint-parser',
4445 extends: ['eslint:recommended'],
4546}
@@ -51,13 +52,37 @@ Install ${chalk.yellow('@babel/eslint-parser')} to prevent potential parsing iss
5152 const babelConfig = babelLoaderUtil . getLoaders ( webpackConfig ) [ 0 ] . options ;
5253 // cacheDirectory is a custom loader option, not a Babel option
5354 delete babelConfig [ 'cacheDirectory' ] ;
55+
56+ ( babelConfig [ 'presets' ] || [ ] ) . forEach ( preset => {
57+ if ( ! Array . isArray ( preset ) ) {
58+ return ;
59+ }
60+
61+ if ( typeof preset [ 0 ] === 'string' && preset [ 0 ] . includes ( '@babel' ) && preset [ 0 ] . includes ( 'preset-env' ) ) {
62+ // The goal is to replace the preset string with a require.resolve() call, executed at runtime.
63+ // Since we output the Babel config as JSON, we need to replace it with a placeholder.
64+ preset [ 0 ] = '__PATH_TO_BABEL_PRESET_ENV__' ;
65+
66+ // The option "targets" is not necessary
67+ delete preset [ 1 ] [ 'targets' ] ;
68+
69+ // If needed, specify the core-js version to use
70+ if ( preset [ 1 ] [ 'corejs' ] === null ) {
71+ preset [ 1 ] [ 'corejs' ] = packageHelper . getPackageVersion ( 'core-js' ) ;
72+ }
73+ }
74+ } ) ;
75+
5476 message += `
5577
5678You will also need to specify your Babel config in a separate file. The current
5779configuration Encore has been adding for your is:
5880
5981${ chalk . yellow ( `// babel.config.js
60- module.exports = ${ JSON . stringify ( babelConfig , null , 4 ) }
82+ module.exports = ${
83+ JSON . stringify ( babelConfig , null , 4 )
84+ . replace ( '"__PATH_TO_BABEL_PRESET_ENV__"' , 'require.resolve("@babel/preset-env")' )
85+ }
6186` ) } `;
6287
6388 if ( webpackConfig . babelConfigurationCallback ) {
0 commit comments