Skip to content

Commit d526e87

Browse files
committed
refactor(@angular-devkit/build-angular): clean up webpack configurations
With this change we remove the worker and typescript configuration.
1 parent 18d3b21 commit d526e87

File tree

9 files changed

+32
-92
lines changed

9 files changed

+32
-92
lines changed

packages/angular_devkit/build_angular/src/builders/browser/index.ts

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,7 @@ import {
4444
getIndexInputFile,
4545
getIndexOutputFile,
4646
} from '../../utils/webpack-browser-config';
47-
import {
48-
getAnalyticsConfig,
49-
getCommonConfig,
50-
getStylesConfig,
51-
getTypeScriptConfig,
52-
getWorkerConfig,
53-
} from '../../webpack/configs';
47+
import { getAnalyticsConfig, getCommonConfig, getStylesConfig } from '../../webpack/configs';
5448
import { markAsyncChunksNonInitial } from '../../webpack/utils/async-chunks';
5549
import { normalizeExtraEntryPoints } from '../../webpack/utils/helpers';
5650
import {
@@ -96,8 +90,6 @@ async function initialize(
9690
getCommonConfig(wco),
9791
getStylesConfig(wco),
9892
getAnalyticsConfig(wco, context),
99-
getTypeScriptConfig(wco),
100-
wco.buildOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
10193
]);
10294

10395
// Validate asset option values if processed directly

packages/angular_devkit/build_angular/src/builders/dev-server/index.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,6 @@ import {
3838
getCommonConfig,
3939
getDevServerConfig,
4040
getStylesConfig,
41-
getTypeScriptConfig,
42-
getWorkerConfig,
4341
} from '../../webpack/configs';
4442
import { IndexHtmlWebpackPlugin } from '../../webpack/plugins/index-html-webpack-plugin';
4543
import { createWebpackLoggingCallback } from '../../webpack/utils/stats';
@@ -167,8 +165,6 @@ export function serveWebpackBrowser(
167165
getCommonConfig(wco),
168166
getStylesConfig(wco),
169167
getAnalyticsConfig(wco, context),
170-
getTypeScriptConfig(wco),
171-
browserOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
172168
],
173169
options,
174170
);

packages/angular_devkit/build_angular/src/builders/extract-i18n/index.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ import type { ɵParsedMessage as LocalizeMessage } from '@angular/localize';
1313
import type { Diagnostics } from '@angular/localize/tools';
1414
import * as fs from 'fs';
1515
import * as path from 'path';
16-
import webpack from 'webpack';
16+
import webpack, { Configuration } from 'webpack';
1717
import { ExecutionTransformer } from '../../transforms';
1818
import { createI18nOptions } from '../../utils/i18n-options';
1919
import { loadEsmModule } from '../../utils/load-esm';
2020
import { assertCompatibleAngularVersion } from '../../utils/version';
2121
import { generateBrowserWebpackConfigFromContext } from '../../utils/webpack-browser-config';
22-
import { getCommonConfig, getTypeScriptConfig, getWorkerConfig } from '../../webpack/configs';
22+
import { getCommonConfig } from '../../webpack/configs';
2323
import { createWebpackLoggingCallback } from '../../webpack/utils/stats';
2424
import { Schema as BrowserBuilderOptions, OutputHashing } from '../browser/schema';
2525
import { Format, Schema } from './schema';
@@ -195,11 +195,9 @@ export async function execute(
195195
// Default value for legacy message ids is currently true
196196
useLegacyIds = wco.tsConfig.options.enableI18nLegacyMessageIdFormat ?? true;
197197

198-
const partials = [
198+
const partials: (Promise<Configuration> | Configuration)[] = [
199199
{ plugins: [new NoEmitPlugin()] },
200200
getCommonConfig(wco),
201-
getTypeScriptConfig(wco),
202-
getWorkerConfig(wco),
203201
];
204202

205203
// Add Ivy application file extractor support

packages/angular_devkit/build_angular/src/builders/karma/index.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,7 @@ import { Configuration } from 'webpack';
1616
import { ExecutionTransformer } from '../../transforms';
1717
import { assertCompatibleAngularVersion } from '../../utils/version';
1818
import { generateBrowserWebpackConfigFromContext } from '../../utils/webpack-browser-config';
19-
import {
20-
getCommonConfig,
21-
getStylesConfig,
22-
getTypeScriptConfig,
23-
getWorkerConfig,
24-
} from '../../webpack/configs';
19+
import { getCommonConfig, getStylesConfig } from '../../webpack/configs';
2520
import { SingleTestTransformLoader } from '../../webpack/plugins/single-test-transform';
2621
import { Schema as BrowserBuilderOptions, OutputHashing } from '../browser/schema';
2722
import { findTests } from './find-tests';
@@ -59,12 +54,7 @@ async function initialize(
5954
watch: true,
6055
},
6156
context,
62-
(wco) => [
63-
getCommonConfig(wco),
64-
getStylesConfig(wco),
65-
getTypeScriptConfig(wco),
66-
getWorkerConfig(wco),
67-
],
57+
(wco) => [getCommonConfig(wco), getStylesConfig(wco)],
6858
);
6959

7060
const karma = await import('karma');

packages/angular_devkit/build_angular/src/builders/server/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { I18nOptions } from '../../utils/i18n-options';
2121
import { ensureOutputPaths } from '../../utils/output-paths';
2222
import { assertCompatibleAngularVersion } from '../../utils/version';
2323
import { generateI18nBrowserWebpackConfigFromContext } from '../../utils/webpack-browser-config';
24-
import { getCommonConfig, getStylesConfig, getTypeScriptConfig } from '../../webpack/configs';
24+
import { getCommonConfig, getStylesConfig } from '../../webpack/configs';
2525
import { webpackStatsLogger } from '../../webpack/utils/stats';
2626
import { Schema as ServerBuilderOptions } from './schema';
2727

@@ -155,7 +155,7 @@ async function initialize(
155155
platform: 'server',
156156
} as NormalizedBrowserBuilderSchema,
157157
context,
158-
(wco) => [getCommonConfig(wco), getStylesConfig(wco), getTypeScriptConfig(wco)],
158+
(wco) => [getCommonConfig(wco), getStylesConfig(wco)],
159159
);
160160

161161
let transformedConfig;

packages/angular_devkit/build_angular/src/webpack/configs/common.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9+
import { AngularWebpackLoaderPath } from '@ngtools/webpack';
910
import CopyWebpackPlugin from 'copy-webpack-plugin';
1011
import * as path from 'path';
1112
import { ScriptTarget } from 'typescript';
@@ -31,6 +32,7 @@ import {
3132
ScriptsWebpackPlugin,
3233
} from '../plugins';
3334
import { ProgressPlugin } from '../plugins/progress-plugin';
35+
import { createIvyPlugin } from '../plugins/typescript';
3436
import {
3537
assetPatterns,
3638
externalizePackages,
@@ -43,13 +45,16 @@ import {
4345

4446
// eslint-disable-next-line max-lines-per-function
4547
export async function getCommonConfig(wco: WebpackConfigOptions): Promise<Configuration> {
46-
const { root, projectRoot, buildOptions, tsConfig, projectName, sourceRoot } = wco;
48+
const { root, projectRoot, buildOptions, tsConfig, projectName, sourceRoot, tsConfigPath } = wco;
4749
const {
4850
cache,
4951
codeCoverage,
5052
crossOrigin = 'none',
5153
platform = 'browser',
54+
aot = true,
5255
codeCoverageExclude = [],
56+
main,
57+
polyfills,
5358
sourceMap: {
5459
styles: stylesSourceMap,
5560
scripts: scriptsSourceMap,
@@ -258,6 +263,18 @@ export async function getCommonConfig(wco: WebpackConfigOptions): Promise<Config
258263
});
259264
}
260265

266+
if (main || polyfills) {
267+
extraRules.push({
268+
test: /\.[cm]?[tj]sx?$/,
269+
loader: AngularWebpackLoaderPath,
270+
});
271+
extraPlugins.push(createIvyPlugin(wco, aot, tsConfigPath));
272+
}
273+
274+
if (webWorkerTsConfig) {
275+
extraPlugins.push(createIvyPlugin(wco, false, path.resolve(wco.root, webWorkerTsConfig)));
276+
}
277+
261278
const extraMinimizers = [];
262279
if (scriptsOptimization) {
263280
extraMinimizers.push(
@@ -340,7 +357,6 @@ export async function getCommonConfig(wco: WebpackConfigOptions): Promise<Config
340357
module: {
341358
// Show an error for missing exports instead of a warning.
342359
strictExportPresence: true,
343-
344360
parser:
345361
webWorkerTsConfig === undefined
346362
? {

packages/angular_devkit/build_angular/src/webpack/configs/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,3 @@ export * from './analytics';
1010
export * from './common';
1111
export * from './dev-server';
1212
export * from './styles';
13-
export * from './typescript';
14-
export * from './worker';

packages/angular_devkit/build_angular/src/webpack/configs/worker.ts

Lines changed: 0 additions & 24 deletions
This file was deleted.

packages/angular_devkit/build_angular/src/webpack/configs/typescript.ts renamed to packages/angular_devkit/build_angular/src/webpack/plugins/typescript.ts

Lines changed: 6 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@
88

99
import { getSystemPath } from '@angular-devkit/core';
1010
import type { CompilerOptions } from '@angular/compiler-cli';
11-
import { AngularWebpackLoaderPath, AngularWebpackPlugin } from '@ngtools/webpack';
11+
import { AngularWebpackPlugin } from '@ngtools/webpack';
1212
import { ScriptTarget } from 'typescript';
13-
import { Configuration } from 'webpack';
1413
import { WebpackConfigOptions } from '../../utils/build-options';
1514

1615
function ensureIvy(wco: WebpackConfigOptions): void {
@@ -28,11 +27,15 @@ function ensureIvy(wco: WebpackConfigOptions): void {
2827
wco.tsConfig.options.enableIvy = true;
2928
}
3029

31-
function createIvyPlugin(
30+
export function createIvyPlugin(
3231
wco: WebpackConfigOptions,
3332
aot: boolean,
3433
tsconfig: string,
3534
): AngularWebpackPlugin {
35+
if (aot) {
36+
ensureIvy(wco);
37+
}
38+
3639
const { buildOptions } = wco;
3740
const optimize = buildOptions.optimization.scripts;
3841

@@ -86,32 +89,3 @@ function createIvyPlugin(
8689
inlineStyleFileExtension,
8790
});
8891
}
89-
90-
export function getTypeScriptConfig(wco: WebpackConfigOptions): Configuration {
91-
const {
92-
buildOptions: { aot = false, main, polyfills },
93-
tsConfigPath,
94-
} = wco;
95-
96-
if (main || polyfills) {
97-
ensureIvy(wco);
98-
99-
return {
100-
module: {
101-
rules: [
102-
{
103-
test: /\.[jt]sx?$/,
104-
loader: AngularWebpackLoaderPath,
105-
},
106-
],
107-
},
108-
plugins: [createIvyPlugin(wco, aot, tsConfigPath)],
109-
};
110-
}
111-
112-
return {};
113-
}
114-
115-
export function getTypescriptWorkerPlugin(wco: WebpackConfigOptions, workerTsConfigPath: string) {
116-
return createIvyPlugin(wco, false, workerTsConfigPath);
117-
}

0 commit comments

Comments
 (0)