From 13bfa09bc628cf504fff2eff292cd730ed04e373 Mon Sep 17 00:00:00 2001 From: Kenneth Toxcon Date: Tue, 17 Jan 2023 23:12:38 -0600 Subject: [PATCH] fix(react): adding support for async plugins in compose-plugins utility closed #14344 --- packages/webpack/src/utils/config.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/webpack/src/utils/config.ts b/packages/webpack/src/utils/config.ts index 19d1025b2a6fe..31d6fac3cc5a3 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; };