From adb381275b2805a86aaa21ebb69c9b57b015b83f Mon Sep 17 00:00:00 2001 From: "Xin Du (Clark)" Date: Mon, 6 May 2019 15:00:07 +0100 Subject: [PATCH] feat(webpack): extendable `babel.presets` and babel `envName` (#5637) --- packages/webpack/src/config/base.js | 28 ++++++++++++++++----------- packages/webpack/src/config/modern.js | 23 +++++++++++----------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/packages/webpack/src/config/base.js b/packages/webpack/src/config/base.js index 4c6bffc790..301eaeab50 100644 --- a/packages/webpack/src/config/base.js +++ b/packages/webpack/src/config/base.js @@ -1,7 +1,6 @@ import path from 'path' import consola from 'consola' import TimeFixPlugin from 'time-fix-plugin' -import clone from 'lodash/clone' import cloneDeep from 'lodash/cloneDeep' import escapeRegExp from 'lodash/escapeRegExp' import VueLoader from 'vue-loader' @@ -70,21 +69,28 @@ export default class WebpackBaseConfig { } getBabelOptions() { - const options = clone(this.buildContext.buildOptions.babel) + const options = { + ...this.buildContext.buildOptions.babel, + envName: this.name + } + + if (options.configFile !== false) { + return options + } + + const defaultPreset = [ + require.resolve('@nuxt/babel-preset-app'), + { + buildTarget: this.isServer ? 'server' : 'client' + } + ] if (typeof options.presets === 'function') { - options.presets = options.presets({ isServer: this.isServer }) + options.presets = options.presets({ isServer: this.isServer }, defaultPreset) } if (!options.babelrc && !options.presets) { - options.presets = [ - [ - require.resolve('@nuxt/babel-preset-app'), - { - buildTarget: this.isServer ? 'server' : 'client' - } - ] - ] + options.presets = [ defaultPreset ] } return options diff --git a/packages/webpack/src/config/modern.js b/packages/webpack/src/config/modern.js index 27512b2a49..ef5cae3da0 100644 --- a/packages/webpack/src/config/modern.js +++ b/packages/webpack/src/config/modern.js @@ -1,4 +1,3 @@ -import clone from 'lodash/clone' import WebpackClientConfig from './client' export default class WebpackModernConfig extends WebpackClientConfig { @@ -15,17 +14,17 @@ export default class WebpackModernConfig extends WebpackClientConfig { } getBabelOptions() { - const options = clone(this.buildContext.buildOptions.babel) - - options.presets = [ - [ - require.resolve('@nuxt/babel-preset-app'), - { - modern: true - } + return { + ...this.buildContext.buildOptions.babel, + envName: this.name, + presets: [ + [ + require.resolve('@nuxt/babel-preset-app'), + { + modern: true + } + ] ] - ] - - return options + } } }