diff --git a/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ b/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ index d4698dc91e42e9..024f04738304e3 100644 --- a/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ +++ b/packages/react/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ @@ -1,6 +1,6 @@ const { composePlugins, withNx } = require('@nrwl/webpack'); const { withReact } = require('@nrwl/react'); -const { withModuleFederation } = require('@nrwl/react/module-federation')); +const { withModuleFederation } = require('@nrwl/react/module-federation'); const baseConfig = require('./module-federation.config'); diff --git a/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ b/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ index 42c59270e0fb5d..31055fab95c01d 100644 --- a/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ +++ b/packages/react/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ @@ -1,6 +1,6 @@ const { composePlugins, withNx } = require('@nrwl/webpack'); const { withReact } = require('@nrwl/react'); -const { withModuleFederation } = require('@nrwl/react/module-federation')); +const { withModuleFederation } = require('@nrwl/react/module-federation'); const baseConfig = require('./module-federation.config'); diff --git a/packages/webpack/src/utils/config.ts b/packages/webpack/src/utils/config.ts index 19d1025b2a6fe7..31d6fac3cc5a3f 100644 --- a/packages/webpack/src/utils/config.ts +++ b/packages/webpack/src/utils/config.ts @@ -1,5 +1,5 @@ -import { Configuration } from 'webpack'; import { ExecutorContext } from '@nrwl/devkit'; +import { Configuration } from 'webpack'; import { NormalizedWebpackExecutorOptions } from '../executors/webpack/schema'; import { withNx } from './with-nx'; @@ -23,7 +23,11 @@ export type NxWebpackPlugin = ( } ) => Configuration; -export function composePlugins(...plugins: NxWebpackPlugin[]) { +export type NxWebpackPluginAsyncResolver = Promise; + +export function composePlugins( + ...plugins: (NxWebpackPlugin | NxWebpackPluginAsyncResolver)[] +) { return function combined( config: Configuration, ctx: { @@ -32,7 +36,13 @@ export function composePlugins(...plugins: NxWebpackPlugin[]) { } ): Configuration { for (const plugin of plugins) { - config = plugin(config, ctx); + if ('then' in plugin) { + plugin.then((resolvedPlugin) => { + config = resolvedPlugin(config, ctx); + }); + } else { + config = plugin(config, ctx); + } } return config; };