|
1 | | -function mergeObjectOrArrayConfig(defaults, config) { |
2 | | - const merge = require('webpack-merge'); |
3 | | - if(Array.isArray(config)) { |
4 | | - return config.map(arrayObject => merge(defaults, arrayObject)); |
| 1 | +function getEnvFromOptionsAndMode(mode, optionsObject) { |
| 2 | + const optionsDevFlag = optionsObject.dev; |
| 3 | + const optionsProdFlag = optionsObject.prod; |
| 4 | + if(!optionsDevFlag && !optionsProdFlag && mode) { |
| 5 | + return mode; |
| 6 | + } |
| 7 | + else if(optionsProdFlag) { |
| 8 | + return 'production'; |
5 | 9 | } |
6 | | - return merge(defaults, config); |
| 10 | + else if(optionsDevFlag) { |
| 11 | + return 'development'; |
| 12 | + } |
| 13 | + return 'production'; |
7 | 14 | } |
8 | 15 |
|
9 | | -module.exports = function(webpackObject, isDevMode) { |
10 | | - if (!isDevMode) { |
11 | | - const prodConfig = require('./prod-config'); |
12 | | - webpackObject.options = mergeObjectOrArrayConfig(prodConfig, webpackObject.options); |
13 | | - } else { |
14 | | - const devConfig = require('./dev-config'); |
15 | | - webpackObject.options = mergeObjectOrArrayConfig(devConfig, webpackObject.options); |
| 16 | +module.exports = function setDefaultConfigBasedOnEnvironment(webpackObject) { |
| 17 | + const merge = require('webpack-merge'); |
| 18 | + if(Array.isArray(webpackObject.options)) { |
| 19 | + const newArrayConfigurations = webpackObject.options.map(arrayObject => { |
| 20 | + const modeFlag = arrayObject.mode; |
| 21 | + const defaultConfigType = getEnvFromOptionsAndMode(modeFlag, webpackObject.outputOptions); |
| 22 | + const defaultConfig = require(`./${defaultConfigType}-config`); |
| 23 | + const newConfig = merge(defaultConfig, arrayObject); |
| 24 | + newConfig.mode = defaultConfigType; |
| 25 | + return newConfig; |
| 26 | + }); |
| 27 | + webpackObject.options = newArrayConfigurations; |
| 28 | + return webpackObject; |
16 | 29 | } |
| 30 | + const modeFlag = webpackObject.options.mode; |
| 31 | + const defaultConfigType = getEnvFromOptionsAndMode(modeFlag, webpackObject.outputOptions); |
| 32 | + const defaultConfig = require(`./${defaultConfigType}-config`); |
| 33 | + const newConfig = merge(defaultConfig, webpackObject.options); |
| 34 | + newConfig.mode = defaultConfigType; |
| 35 | + webpackObject.options = newConfig; |
17 | 36 | return webpackObject; |
18 | 37 | }; |
0 commit comments