From 5084cde6b981f5e5cd24c832851979cc7ecb1ec2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 7 May 2020 09:25:02 -0700 Subject: [PATCH] Split babel config from babel loader config (#5797) --- build-scripts/babel.js | 55 +++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 28 deletions(-) diff --git a/build-scripts/babel.js b/build-scripts/babel.js index e257801972..8e8abee81c 100644 --- a/build-scripts/babel.js +++ b/build-scripts/babel.js @@ -1,3 +1,29 @@ +const options = ({ latestBuild }) => ({ + presets: [ + !latestBuild && [require("@babel/preset-env").default, { modules: false }], + require("@babel/preset-typescript").default, + ].filter(Boolean), + plugins: [ + // Part of ES2018. Converts {...a, b: 2} to Object.assign({}, a, {b: 2}) + [ + "@babel/plugin-proposal-object-rest-spread", + { loose: true, useBuiltIns: true }, + ], + // Only support the syntax, Webpack will handle it. + "@babel/syntax-dynamic-import", + "@babel/plugin-proposal-optional-chaining", + "@babel/plugin-proposal-nullish-coalescing-operator", + [ + require("@babel/plugin-proposal-decorators").default, + { decoratorsBeforeExport: true }, + ], + [ + require("@babel/plugin-proposal-class-properties").default, + { loose: true }, + ], + ], +}); + module.exports.babelLoaderConfig = ({ latestBuild }) => { if (latestBuild === undefined) { throw Error("latestBuild not defined for babel loader config"); @@ -7,34 +33,7 @@ module.exports.babelLoaderConfig = ({ latestBuild }) => { exclude: [require.resolve("@mdi/js/mdi.js"), require.resolve("hls.js")], use: { loader: "babel-loader", - options: { - presets: [ - !latestBuild && [ - require("@babel/preset-env").default, - { modules: false }, - ], - require("@babel/preset-typescript").default, - ].filter(Boolean), - plugins: [ - // Part of ES2018. Converts {...a, b: 2} to Object.assign({}, a, {b: 2}) - [ - "@babel/plugin-proposal-object-rest-spread", - { loose: true, useBuiltIns: true }, - ], - // Only support the syntax, Webpack will handle it. - "@babel/syntax-dynamic-import", - "@babel/plugin-proposal-optional-chaining", - "@babel/plugin-proposal-nullish-coalescing-operator", - [ - require("@babel/plugin-proposal-decorators").default, - { decoratorsBeforeExport: true }, - ], - [ - require("@babel/plugin-proposal-class-properties").default, - { loose: true }, - ], - ], - }, + options: options({ latestBuild }), }, }; };