Skip to content

Commit

Permalink
fix(react): adding support for async plugins in compose-plugins utility
Browse files Browse the repository at this point in the history
closed #14344
  • Loading branch information
Ktoxcon authored and jaysoo committed Jan 21, 2023
1 parent 0e018e6 commit 13bfa09
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions packages/webpack/src/utils/config.ts
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -23,7 +23,11 @@ export type NxWebpackPlugin = (
}
) => Configuration;

export function composePlugins(...plugins: NxWebpackPlugin[]) {
export type NxWebpackPluginAsyncResolver = Promise<NxWebpackPlugin>;

export function composePlugins(
...plugins: (NxWebpackPlugin | NxWebpackPluginAsyncResolver)[]
) {
return function combined(
config: Configuration,
ctx: {
Expand All @@ -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;
};
Expand Down

0 comments on commit 13bfa09

Please sign in to comment.