From dcad2ee0d3b287f38bd4f166cc994d16231cd571 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 30 Sep 2020 10:26:50 +0200 Subject: [PATCH] fix(@angular-devkit/build-angular): don't process stylesheets in extraction builder When building an application for i18n extraction we are currently redundantly processing components stylesheets. With this change we replace the components stylesheets with an empty string which helps reduce the i18n build time. --- .../src/extract-i18n/empty-export-default.js | 1 + .../build_angular/src/extract-i18n/index.ts | 20 +++++++++++-------- 2 files changed, 13 insertions(+), 8 deletions(-) create mode 100644 packages/angular_devkit/build_angular/src/extract-i18n/empty-export-default.js diff --git a/packages/angular_devkit/build_angular/src/extract-i18n/empty-export-default.js b/packages/angular_devkit/build_angular/src/extract-i18n/empty-export-default.js new file mode 100644 index 000000000000..08d725cd4e46 --- /dev/null +++ b/packages/angular_devkit/build_angular/src/extract-i18n/empty-export-default.js @@ -0,0 +1 @@ +export default ''; 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 618cf4084c4f..1e3c6a1fbaaf 100644 --- a/packages/angular_devkit/build_angular/src/extract-i18n/index.ts +++ b/packages/angular_devkit/build_angular/src/extract-i18n/index.ts @@ -22,12 +22,7 @@ import { ExecutionTransformer } from '../transforms'; import { createI18nOptions } from '../utils/i18n-options'; import { assertCompatibleAngularVersion } from '../utils/version'; import { generateBrowserWebpackConfigFromContext } from '../utils/webpack-browser-config'; -import { - getAotConfig, - getCommonConfig, - getStatsConfig, - getStylesConfig, -} from '../webpack/configs'; +import { getAotConfig, getCommonConfig, getStatsConfig } from '../webpack/configs'; import { createWebpackLoggingCallback } from '../webpack/utils/stats'; import { Format, Schema } from './schema'; @@ -182,7 +177,6 @@ export async function execute( getCommonConfig(wco), // Only use VE extraction if not using Ivy getAotConfig(wco, !usingIvy), - getStylesConfig(wco), getStatsConfig(wco), ]; @@ -203,6 +197,16 @@ export async function execute( }); } + // Replace all stylesheets with an empty default export + partials.push({ + plugins: [ + new webpack.NormalModuleReplacementPlugin( + /\.(css|scss|sass|styl|less)$/, + path.join(__dirname, 'empty-export-default.js'), + ), + ], + }); + return partials; }, ); @@ -227,7 +231,7 @@ export async function execute( context, { logging: createWebpackLoggingCallback(false, context.logger), - webpackFactory: await import('webpack'), + webpackFactory: webpack, }, ).toPromise();