diff --git a/packages/webpack-cli/lib/groups/resolveConfig.js b/packages/webpack-cli/lib/groups/resolveConfig.js index 18d3a5cbca4..d115b067b2c 100644 --- a/packages/webpack-cli/lib/groups/resolveConfig.js +++ b/packages/webpack-cli/lib/groups/resolveConfig.js @@ -156,9 +156,9 @@ const finalize = async (moduleObj, args) => { const isMultiCompilerMode = Array.isArray(config); const rawConfigs = isMultiCompilerMode ? config : [config]; - let isFunctionalConfig = false; + let configs = []; - let configs = await Promise.all( + await Promise.all( rawConfigs.map(async (rawConfig) => { const isPromise = typeof rawConfig.then === 'function'; @@ -168,20 +168,26 @@ const finalize = async (moduleObj, args) => { // `Promise` may return `Function` if (typeof rawConfig === 'function') { - isFunctionalConfig = true; // when config is a function, pass the env from args to the config function rawConfig = await rawConfig(env, args); } return rawConfig; }), - ); + ).then((allConfigs) => { + allConfigs.map((singleConfig) => { + if (Array.isArray(singleConfig)) { + singleConfig.map((conf) => configs.push(conf)); + } else { + configs.push(singleConfig); + } + }); + }); if (configName) { const foundConfigNames = []; - const configsToFilter = Array.isArray[configs[0]] ? configs[0] : configs; - configs = configsToFilter.filter((options) => { + configs = configs.filter((options) => { const found = configName.includes(options.name); if (found) { @@ -208,7 +214,7 @@ const finalize = async (moduleObj, args) => { process.exit(2); } - newOptionsObject['options'] = isMultiCompilerMode || isFunctionalConfig ? configs : configs[0]; + newOptionsObject['options'] = isMultiCompilerMode || Array.isArray(configs) ? configs : configs[0]; return newOptionsObject; };