Skip to content

Commit

Permalink
fix(node): allow use multiple config in custom webpack configuration …
Browse files Browse the repository at this point in the history
…file

When use a custom configuration file for node webpack build target.
allow running webpack with
multiple configuration options

ISSUES CLOSED: nrwl#9453
  • Loading branch information
sidmonta committed Mar 22, 2022
1 parent 2a1cea6 commit 58fc75a
Showing 1 changed file with 19 additions and 10 deletions.
29 changes: 19 additions & 10 deletions packages/node/src/executors/webpack/webpack.impl.ts
Expand Up @@ -9,7 +9,7 @@ import {
} from '@nrwl/workspace/src/utilities/buildable-libs-utils';
import { getRootTsConfigPath } from '@nrwl/workspace/src/utilities/typescript';

import { map, tap } from 'rxjs/operators';
import { map, mergeMap, tap } from 'rxjs/operators';
import { eachValueFrom } from 'rxjs-for-await';
import { resolve } from 'path';
import { register } from 'ts-node';
Expand All @@ -19,6 +19,8 @@ import { BuildNodeBuilderOptions } from '../../utils/types';
import { normalizeBuildOptions } from '../../utils/normalize';
import { generatePackageJson } from '../../utils/generate-package-json';
import { runWebpack } from '../../utils/run-webpack';
import { from, of } from 'rxjs';
import { Configuration } from 'webpack';

export type NodeBuildEvent = {
outfile: string;
Expand Down Expand Up @@ -81,17 +83,24 @@ export async function* webpackExecutor(
if (options.generatePackageJson) {
generatePackageJson(context.projectName, projGraph, options);
}
const config = options.webpackConfig.reduce((currentConfig, plugin) => {
return require(plugin)(currentConfig, {
options,
configuration: context.configurationName,
});
}, getNodeWebpackConfig(options));
const config: Configuration | Configuration[] = options.webpackConfig.reduce(
(currentConfig, plugin) => {
return require(plugin)(currentConfig, {
options,
configuration: context.configurationName,
});
},
getNodeWebpackConfig(options)
);

return yield* eachValueFrom(
runWebpack(config).pipe(
tap((stats) => {
console.info(stats.toString(config.stats));
(Array.isArray(config) ? from(config) : of(config)).pipe(
mergeMap((conf) => {
return runWebpack(conf).pipe(
tap((stats) => {
console.info(stats.toString(conf.stats));
})
);
}),
map((stats) => {
return {
Expand Down

0 comments on commit 58fc75a

Please sign in to comment.