From 3e8496721d28d65b9939522b8a09fae842dfa30a Mon Sep 17 00:00:00 2001 From: Colum Ferry Date: Tue, 14 May 2024 14:19:47 +0100 Subject: [PATCH] fix(webpack): apply-base-config should initialize options it will set #23296 (#23368) ## Current Behavior The `@nx/webpack/plugin` will resolve and read webpack options from user defined config files. However, it does not set the env vars indicating that a task is being run, because tasks are not being run at this stage. This means that certain config properties are not being set by `applyBaseConfig`. Users' webpack configs may rely on these properties being set so they can modify them. When not set, this throws, meaning the graph cannot be constructed. ## Expected Behavior Initialize the properties that we usually set when `applyBaseConfig` is used. ## Related Issue(s) Fixes #23296 --- .../nx-webpack-plugin/lib/apply-base-config.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/webpack/src/plugins/nx-webpack-plugin/lib/apply-base-config.ts b/packages/webpack/src/plugins/nx-webpack-plugin/lib/apply-base-config.ts index 802114b9c786e..00aaba9c823ca 100644 --- a/packages/webpack/src/plugins/nx-webpack-plugin/lib/apply-base-config.ts +++ b/packages/webpack/src/plugins/nx-webpack-plugin/lib/apply-base-config.ts @@ -197,6 +197,20 @@ function applyNxIndependentConfig( moduleTrace: !!options.verbose, usedExports: !!options.verbose, }; + + /** + * Initialize properties that get set when webpack is used during task execution. + * These properties may be used by consumers who expect them to not be undefined. + * + * When @nx/webpack/plugin resolves the config, it is not during a task, and therefore + * these values are not set, which can lead to errors being thrown when reading + * the webpack options from the resolved file. + */ + config.entry ??= {}; + config.resolve ??= {}; + config.module ??= {}; + config.plugins ??= []; + config.externals ??= []; } function applyNxDependentConfig(