From 2842674e9131d90cd8df2da19a885f0633c999cb Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Wed, 10 Apr 2019 10:32:36 +0100 Subject: [PATCH 1/2] feat(@angular-devkit/build-angular): support web workers in karma builder Followup to https://github.com/angular/angular-cli/pull/13700, the karma builder did not get the same support but it should. --- .../src/angular-cli-files/models/webpack-configs/worker.ts | 5 +++++ packages/angular_devkit/build_angular/src/browser/index.ts | 5 +---- packages/angular_devkit/build_angular/src/karma/index.ts | 2 ++ packages/angular_devkit/build_angular/src/karma/schema.json | 4 ++++ 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/worker.ts b/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/worker.ts index 1ec0a148ed0d..fc3b8d5b3896 100644 --- a/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/worker.ts +++ b/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/worker.ts @@ -15,7 +15,12 @@ const WorkerPlugin = require('worker-plugin'); export function getWorkerConfig(wco: WebpackConfigOptions): Configuration { const { buildOptions } = wco; + if (!buildOptions.webWorkerTsConfig) { + return {}; + } + + if (typeof buildOptions.webWorkerTsConfig != 'string') { throw new Error('The `webWorkerTsConfig` must be a string.'); } diff --git a/packages/angular_devkit/build_angular/src/browser/index.ts b/packages/angular_devkit/build_angular/src/browser/index.ts index 7aeab2a9f000..64f0e8d62bdf 100644 --- a/packages/angular_devkit/build_angular/src/browser/index.ts +++ b/packages/angular_devkit/build_angular/src/browser/index.ts @@ -155,6 +155,7 @@ export function buildWebpackConfig( getBrowserConfig(wco), getStylesConfig(wco), getStatsConfig(wco), + getWorkerConfig(wco), ]; if (wco.buildOptions.main || wco.buildOptions.polyfills) { @@ -179,10 +180,6 @@ export function buildWebpackConfig( }); } - if (wco.buildOptions.webWorkerTsConfig) { - webpackConfigs.push(getWorkerConfig(wco)); - } - const webpackConfig = webpackMerge(webpackConfigs); if (options.profile || process.env['NG_BUILD_PROFILING']) { diff --git a/packages/angular_devkit/build_angular/src/karma/index.ts b/packages/angular_devkit/build_angular/src/karma/index.ts index d437b36dc848..38230be6afbf 100644 --- a/packages/angular_devkit/build_angular/src/karma/index.ts +++ b/packages/angular_devkit/build_angular/src/karma/index.ts @@ -16,6 +16,7 @@ import { getNonAotConfig, getStylesConfig, getTestConfig, + getWorkerConfig, } from '../angular-cli-files/models/webpack-configs'; import { Schema as BrowserBuilderOptions } from '../browser/schema'; import { generateBrowserWebpackConfigFromContext } from '../utils/webpack-browser-config'; @@ -44,6 +45,7 @@ async function initialize( getStylesConfig(wco), getNonAotConfig(wco), getTestConfig(wco), + getWorkerConfig(wco), ], host, ); diff --git a/packages/angular_devkit/build_angular/src/karma/schema.json b/packages/angular_devkit/build_angular/src/karma/schema.json index a36b9797f236..1f70c9976313 100644 --- a/packages/angular_devkit/build_angular/src/karma/schema.json +++ b/packages/angular_devkit/build_angular/src/karma/schema.json @@ -185,6 +185,10 @@ "items": { "type": "string" } + }, + "webWorkerTsConfig": { + "type": "string", + "description": "TypeScript configuration for Web Worker modules." } }, "additionalProperties": false, From b57efa9bf47e8de810e59ca45e9566e9df48cdd2 Mon Sep 17 00:00:00 2001 From: Filipe Silva Date: Wed, 10 Apr 2019 11:09:59 +0100 Subject: [PATCH 2/2] fix(@angular/cli): update config schema for karma webworker --- packages/angular/cli/lib/config/schema.json | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/packages/angular/cli/lib/config/schema.json b/packages/angular/cli/lib/config/schema.json index 774eb7daeb44..cd0b2b193e6c 100644 --- a/packages/angular/cli/lib/config/schema.json +++ b/packages/angular/cli/lib/config/schema.json @@ -548,7 +548,7 @@ "type": "null", "definitions": { "appShell": { - "description": "App Shell target options for Build Facade.", + "description": "App Shell target options for Architect.", "type": "object", "properties": { "browserTarget": { @@ -580,7 +580,7 @@ "additionalProperties": false }, "browser": { - "title": "Webpack browser schema for Build Facade.", + "title": "Webpack browser schema for Architect.", "description": "Browser target options", "properties": { "assets": { @@ -1050,7 +1050,7 @@ } }, "devServer": { - "description": "Dev Server target options for Build Facade.", + "description": "Dev Server target options for Architect.", "type": "object", "properties": { "browserTarget": { @@ -1223,7 +1223,7 @@ "additionalProperties": false }, "extracti18n": { - "description": "Extract i18n target options for Build Facade.", + "description": "Extract i18n target options for Architect.", "type": "object", "properties": { "browserTarget": { @@ -1264,7 +1264,7 @@ "additionalProperties": false }, "karma": { - "description": "Karma target options for Build Facade.", + "description": "Karma target options for Architect.", "type": "object", "properties": { "main": { @@ -1439,6 +1439,10 @@ "items": { "type": "string" } + }, + "webWorkerTsConfig": { + "type": "string", + "description": "TypeScript configuration for Web Worker modules." } }, "additionalProperties": false, @@ -1514,7 +1518,7 @@ } }, "protractor": { - "description": "Protractor target options for Build Facade.", + "description": "Protractor target options for Architect.", "type": "object", "properties": { "protractorConfig": { @@ -1822,7 +1826,7 @@ } }, "tslint": { - "description": "TSlint target options for Build Facade.", + "description": "TSlint target options for Architect.", "type": "object", "properties": { "tslintConfig": {