From 4025979bb0661a3125134a39bf804028a2844cf9 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Fri, 21 Aug 2020 16:27:37 -0400 Subject: [PATCH] feat(@angular-devkit/build-angular): allow transformation of i18n extraction builder configuration This change allows the underlying webpack configuration of the i18n extraction builder to be modified when programmatically using the builder. Programmatic usage of the `@angular-devkit/build-angular` builders is currently considered experimental. Closes #16679 --- .../build_angular/src/extract-i18n/index.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/extract-i18n/index.ts b/packages/angular_devkit/build_angular/src/extract-i18n/index.ts index b1247d6aa97e..4da06862d1ff 100644 --- a/packages/angular_devkit/build_angular/src/extract-i18n/index.ts +++ b/packages/angular_devkit/build_angular/src/extract-i18n/index.ts @@ -25,6 +25,7 @@ import { } from '../angular-cli-files/models/webpack-configs'; import { statsErrorsToString, statsHasErrors, statsHasWarnings, statsWarningsToString } from '../angular-cli-files/utilities/stats'; import { Schema as BrowserBuilderOptions } from '../browser/schema'; +import { ExecutionTransformer } from '../transforms'; import { createI18nOptions } from '../utils/i18n-options'; import { assertCompatibleAngularVersion } from '../utils/version'; import { generateBrowserWebpackConfigFromContext } from '../utils/webpack-browser-config'; @@ -83,6 +84,9 @@ class InMemoryOutputPlugin { export async function execute( options: ExtractI18nBuilderOptions, context: BuilderContext, + transforms?: { + webpackConfiguration?: ExecutionTransformer; + }, ): Promise { // Check Angular version. assertCompatibleAngularVersion(context.workspaceRoot, context.logger); @@ -226,10 +230,14 @@ export async function execute( } }; - const webpackResult = await runWebpack(config, context, { - logging, - webpackFactory: await import('webpack'), - }).toPromise(); + const webpackResult = await runWebpack( + (await transforms?.webpackConfiguration?.(config)) || config, + context, + { + logging, + webpackFactory: await import('webpack'), + }, + ).toPromise(); // Complete if using VE if (!usingIvy) {