From a232625bc72897e4b01d3eb85a1326c8084d3c43 Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Sun, 1 Nov 2020 13:02:22 +0530 Subject: [PATCH 1/6] fix: assign cache value for default configs --- packages/webpack-cli/lib/groups/resolveConfig.js | 10 +++++++--- packages/webpack-cli/lib/utils/flag-defaults.js | 13 +++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/webpack-cli/lib/groups/resolveConfig.js b/packages/webpack-cli/lib/groups/resolveConfig.js index ed66ebcca1c..5fe166cb4ab 100644 --- a/packages/webpack-cli/lib/groups/resolveConfig.js +++ b/packages/webpack-cli/lib/groups/resolveConfig.js @@ -126,13 +126,13 @@ const resolveConfigFiles = async (args) => { const defaultConfig = configFiles.find((p) => p.path.includes(mode) || p.path.includes(modeAlias[mode])); if (defaultConfig) { - opts = await finalize(defaultConfig, args); + opts = await finalize(defaultConfig, args, true); return; } const foundConfig = configFiles.pop(); - opts = await finalize(foundConfig, args); + opts = await finalize(foundConfig, args, true); return; } @@ -140,7 +140,7 @@ const resolveConfigFiles = async (args) => { // Given config data, determines the type of config and // returns final config -const finalize = async (moduleObj, args) => { +const finalize = async (moduleObj, args, isDefault = false) => { const { env, configName } = args; const newOptionsObject = { outputOptions: {}, @@ -151,6 +151,10 @@ const finalize = async (moduleObj, args) => { return newOptionsObject; } + if (isDefault) { + newOptionsObject.outputOptions.defaultConfig = moduleObj.path; + } + const config = moduleObj.config; const isMultiCompilerMode = Array.isArray(config); diff --git a/packages/webpack-cli/lib/utils/flag-defaults.js b/packages/webpack-cli/lib/utils/flag-defaults.js index 10940d05d42..75c18c6d6ed 100644 --- a/packages/webpack-cli/lib/utils/flag-defaults.js +++ b/packages/webpack-cli/lib/utils/flag-defaults.js @@ -1,23 +1,24 @@ -const cacheDefaults = (finalConfig, parsedArgs) => { +const cacheDefaults = (finalConfig, parsedArgs, outputOptions) => { // eslint-disable-next-line no-prototype-builtins const hasCache = finalConfig.hasOwnProperty('cache'); let cacheConfig = {}; - if (hasCache && parsedArgs.config) { + if (hasCache && (parsedArgs.config || outputOptions.defaultConfig)) { if (finalConfig.cache && finalConfig.cache.type === 'filesystem') { cacheConfig.buildDependencies = { - config: parsedArgs.config, + config: parsedArgs.config || outputOptions.defaultConfig, }; } return { cache: cacheConfig }; } + console.log({ cacheConfig, outputOptions }); return cacheConfig; }; -const assignFlagDefaults = (compilerConfig, parsedArgs) => { +const assignFlagDefaults = (compilerConfig, parsedArgs, outputOptions) => { if (Array.isArray(compilerConfig)) { - return compilerConfig.map((config) => cacheDefaults(config, parsedArgs)); + return compilerConfig.map((config) => cacheDefaults(config, parsedArgs, outputOptions)); } - return cacheDefaults(compilerConfig, parsedArgs); + return cacheDefaults(compilerConfig, parsedArgs, outputOptions); }; module.exports = assignFlagDefaults; From 94c486933963df48549cb7f29f91821dd3436bfc Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Tue, 3 Nov 2020 12:30:17 +0530 Subject: [PATCH 2/6] fix: assign cache fordefault config --- packages/webpack-cli/lib/utils/flag-defaults.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/webpack-cli/lib/utils/flag-defaults.js b/packages/webpack-cli/lib/utils/flag-defaults.js index 75c18c6d6ed..cba1043786a 100644 --- a/packages/webpack-cli/lib/utils/flag-defaults.js +++ b/packages/webpack-cli/lib/utils/flag-defaults.js @@ -10,7 +10,6 @@ const cacheDefaults = (finalConfig, parsedArgs, outputOptions) => { } return { cache: cacheConfig }; } - console.log({ cacheConfig, outputOptions }); return cacheConfig; }; From a8c5b0e4b80d3933351a6562828992a4acfe7cda Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Tue, 3 Nov 2020 14:22:20 +0530 Subject: [PATCH 3/6] tests: fix --- packages/webpack-cli/lib/utils/flag-defaults.js | 4 +++- test/core-flags/cache-flags.test.js | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/webpack-cli/lib/utils/flag-defaults.js b/packages/webpack-cli/lib/utils/flag-defaults.js index cba1043786a..0aa2996f98f 100644 --- a/packages/webpack-cli/lib/utils/flag-defaults.js +++ b/packages/webpack-cli/lib/utils/flag-defaults.js @@ -5,8 +5,10 @@ const cacheDefaults = (finalConfig, parsedArgs, outputOptions) => { if (hasCache && (parsedArgs.config || outputOptions.defaultConfig)) { if (finalConfig.cache && finalConfig.cache.type === 'filesystem') { cacheConfig.buildDependencies = { - config: parsedArgs.config || outputOptions.defaultConfig, + config: parsedArgs.config || [outputOptions.defaultConfig], }; + } else { + cacheConfig = finalConfig.cache; } return { cache: cacheConfig }; } diff --git a/test/core-flags/cache-flags.test.js b/test/core-flags/cache-flags.test.js index f4164965e14..767c61d924e 100644 --- a/test/core-flags/cache-flags.test.js +++ b/test/core-flags/cache-flags.test.js @@ -136,6 +136,17 @@ describe('cache related flags from core', () => { expect(exitCode).toEqual(0); }); + it('should assign cache build dependencies with default config', () => { + // TODO: Fix on windows + if (isWindows) return; + const { stderr, stdout, exitCode } = run(__dirname, ['--cache-type', 'filesystem']); + expect(stderr).toBeFalsy(); + expect(stdout).toContain('buildDependencies'); + expect(stdout).toContain(`'${path.join(__dirname, './webpack.config.js')}'`); + expect(stdout).toContain("type: 'filesystem'"); + expect(exitCode).toEqual(0); + }); + it('should assign cache build dependencies with merged configs', () => { // TODO: Fix on windows if (isWindows) return; From 4755dce419a5ee1043eac257c1067c974ebe1683 Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Tue, 3 Nov 2020 15:05:42 +0530 Subject: [PATCH 4/6] tests: fix --- packages/webpack-cli/lib/utils/flag-defaults.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webpack-cli/lib/utils/flag-defaults.js b/packages/webpack-cli/lib/utils/flag-defaults.js index 0aa2996f98f..c2484fb53ea 100644 --- a/packages/webpack-cli/lib/utils/flag-defaults.js +++ b/packages/webpack-cli/lib/utils/flag-defaults.js @@ -2,7 +2,7 @@ const cacheDefaults = (finalConfig, parsedArgs, outputOptions) => { // eslint-disable-next-line no-prototype-builtins const hasCache = finalConfig.hasOwnProperty('cache'); let cacheConfig = {}; - if (hasCache && (parsedArgs.config || outputOptions.defaultConfig)) { + if (hasCache && (parsedArgs.config || (outputOptions && outputOptions.defaultConfig))) { if (finalConfig.cache && finalConfig.cache.type === 'filesystem') { cacheConfig.buildDependencies = { config: parsedArgs.config || [outputOptions.defaultConfig], From 96793277ccce72b09b2ed441278fde5ac8497f86 Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Wed, 4 Nov 2020 21:56:38 +0530 Subject: [PATCH 5/6] fix: tests --- packages/webpack-cli/lib/webpack-cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webpack-cli/lib/webpack-cli.js b/packages/webpack-cli/lib/webpack-cli.js index 918af585ebf..9a2957003eb 100644 --- a/packages/webpack-cli/lib/webpack-cli.js +++ b/packages/webpack-cli/lib/webpack-cli.js @@ -45,7 +45,7 @@ class WebpackCLI { // Merge the core flag config with the compilerConfiguration coreCliHelper.processArguments(coreCliArgs, this.compilerConfiguration, coreConfig); // Assign some defaults to core flags - const configWithDefaults = assignFlagDefaults(this.compilerConfiguration, parsedArgs); + const configWithDefaults = assignFlagDefaults(this.compilerConfiguration, parsedArgs, this.outputConfiguration); this._mergeOptionsToConfiguration(configWithDefaults); } From 72dede15a8316585f68a5a436373dcb7b0688bcb Mon Sep 17 00:00:00 2001 From: Anshuman Verma Date: Wed, 4 Nov 2020 22:45:43 +0530 Subject: [PATCH 6/6] fix: rename --- packages/webpack-cli/lib/groups/resolveConfig.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/webpack-cli/lib/groups/resolveConfig.js b/packages/webpack-cli/lib/groups/resolveConfig.js index 5fe166cb4ab..de33eba34e4 100644 --- a/packages/webpack-cli/lib/groups/resolveConfig.js +++ b/packages/webpack-cli/lib/groups/resolveConfig.js @@ -140,7 +140,7 @@ const resolveConfigFiles = async (args) => { // Given config data, determines the type of config and // returns final config -const finalize = async (moduleObj, args, isDefault = false) => { +const finalize = async (moduleObj, args, isDefaultConfig = false) => { const { env, configName } = args; const newOptionsObject = { outputOptions: {}, @@ -151,7 +151,7 @@ const finalize = async (moduleObj, args, isDefault = false) => { return newOptionsObject; } - if (isDefault) { + if (isDefaultConfig) { newOptionsObject.outputOptions.defaultConfig = moduleObj.path; }