From 734eb0ebf3ac23a9e6675c44f8fefb2b763c20a4 Mon Sep 17 00:00:00 2001 From: Vyrtsev Mikhail Date: Sat, 27 Jul 2019 02:53:21 +0300 Subject: [PATCH] replace duplicating babel config with common excludes getter --- frontend/webpack.config.js | 44 +++++++++++++++----------------------- 1 file changed, 17 insertions(+), 27 deletions(-) diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index ff9b0fe3..9756e219 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -19,6 +19,20 @@ const NODE_ID = 'remark42'; console.log(`NODE_ENV = ${env}`); console.log(`REMARK_ENV = ${remarkUrl}`); +/** + * Generates excludes for babel-loader + * + * Exclude is a module that has >=es6 code and resides in node_modules. + * By defaut babel-loader ignores everything from node_modules, + * so we have to exclude from ignore these modules + */ +function getExcluded() { + const modules = ['markdown-toolbar-element']; + const exclude = new RegExp(`node_modules\\/(?!(${modules.map(m => m.replace(/\//g, '\\/')).join('|')})\\/).*`); + + return { exclude }; +} + const commonStyleLoaders = [ 'css-loader', { @@ -62,37 +76,13 @@ module.exports = () => ({ rules: [ { test: /\.js(x?)$/, - oneOf: [ - { - include: /node_modules\/@github\/markdown-toolbar-element/, - use: { - loader: 'babel-loader', - options: { - presets: [ - [ - '@babel/preset-env', - { - targets: { - browsers: ['> 1%', 'android >= 4.4.4', 'ios >= 9', 'IE >= 11'], - }, - useBuiltIns: 'usage', - corejs: 3, - }, - ], - ], - }, - }, - }, - { - exclude: /node_modules/, - use: 'babel-loader', - }, - ], + use: 'babel-loader', + ...getExcluded(), }, { test: /\.ts(x?)$/, - exclude: /node_modules/, use: ['babel-loader', 'ts-loader'], + ...getExcluded(), }, { test: /\.s?css$/,