diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap index c21a344ae..d8bb1965b 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/angular.spec.ts.snap @@ -90,17 +90,6 @@ exports[`angular configuration for android 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -446,17 +435,6 @@ exports[`angular configuration for ios 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/base.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/base.spec.ts.snap index 781b27a7c..2d6555266 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/base.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/base.spec.ts.snap @@ -105,17 +105,6 @@ exports[`base configuration for android 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -406,17 +395,6 @@ exports[`base configuration for ios 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/javascript.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/javascript.spec.ts.snap index 138492e83..e3c4cd4a5 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/javascript.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/javascript.spec.ts.snap @@ -105,17 +105,6 @@ exports[`javascript configuration for android 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -444,17 +433,6 @@ exports[`javascript configuration for ios 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/react.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/react.spec.ts.snap index 55375a7e6..00a1c67bb 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/react.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/react.spec.ts.snap @@ -120,17 +120,6 @@ exports[`react configuration > android > adds ReactRefreshWebpackPlugin when HMR test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -438,17 +427,6 @@ exports[`react configuration > android > base config 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -756,17 +734,6 @@ exports[`react configuration > ios > adds ReactRefreshWebpackPlugin when HMR ena test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -1075,17 +1042,6 @@ exports[`react configuration > ios > base config 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/svelte.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/svelte.spec.ts.snap index 2eda2b9bb..d0277ceef 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/svelte.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/svelte.spec.ts.snap @@ -107,17 +107,6 @@ exports[`svelte configuration for android 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -433,17 +422,6 @@ exports[`svelte configuration for ios 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/typescript.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/typescript.spec.ts.snap index 23d785fd1..e63151c8e 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/typescript.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/typescript.spec.ts.snap @@ -105,17 +105,6 @@ exports[`typescript configuration for android 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -444,17 +433,6 @@ exports[`typescript configuration for ios 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap b/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap index 41c3a007e..ce100a7be 100644 --- a/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap +++ b/packages/webpack5/__tests__/configuration/__snapshots__/vue.spec.ts.snap @@ -111,17 +111,6 @@ exports[`vue configuration for android 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ @@ -444,17 +433,6 @@ exports[`vue configuration for ios 1`] = ` test: /\\\\.js$/, exclude: [ /node_modules/ - ], - use: [ - /* config.module.rule('js').use('babel-loader') */ - { - loader: 'babel-loader', - options: { - generatorOpts: { - compact: false - } - } - } ] }, /* config.module.rule('workers') */ diff --git a/packages/webpack5/package.json b/packages/webpack5/package.json index b6b562104..1b25fc7cd 100644 --- a/packages/webpack5/package.json +++ b/packages/webpack5/package.json @@ -19,6 +19,7 @@ "dependencies": { "@babel/core": "7.13.14", "@pmmmwh/react-refresh-webpack-plugin": "0.4.3", + "acorn-stage3": "^4.0.0", "babel-loader": "8.2.2", "chalk": "4.1.0", "cli-highlight": "2.1.11", diff --git a/packages/webpack5/src/configuration/base.ts b/packages/webpack5/src/configuration/base.ts index ec420ee89..95382da39 100644 --- a/packages/webpack5/src/configuration/base.ts +++ b/packages/webpack5/src/configuration/base.ts @@ -208,19 +208,11 @@ export default function (config: Config, env: IWebpackEnv = _env): Config { }); // set up js - // todo: do we need babel-loader? It's useful to support it config.module .rule('js') .test(/\.js$/) .exclude.add(/node_modules/) - .end() - .use('babel-loader') - .loader('babel-loader') - .options({ - generatorOpts: { - compact: false, - }, - }); + .end(); config.module .rule('workers') diff --git a/packages/webpack5/src/index.ts b/packages/webpack5/src/index.ts index bee44df52..437f94c2a 100644 --- a/packages/webpack5/src/index.ts +++ b/packages/webpack5/src/index.ts @@ -1,3 +1,11 @@ +// Make sure the Acorn Parser (used by Webpack) can parse ES-Stage3 code +// This must be at the top BEFORE webpack is loaded so that we can extend +// and replace the parser before webpack uses it +// Based on the issue: https://github.com/webpack/webpack/issues/10216 +const stage3 = require('acorn-stage3'); +const acorn = require('acorn'); +acorn.Parser = acorn.Parser.extend(stage3); + import { highlight } from 'cli-highlight'; import { merge } from 'webpack-merge'; import Config from 'webpack-chain';