Skip to content

Commit 36a28e5

Browse files
committed
fix(@angular-devkit/build-angular): styles that are not injected do count for initial bundle size
Closes #17672
1 parent a179828 commit 36a28e5

File tree

4 files changed

+19
-5
lines changed

4 files changed

+19
-5
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -274,8 +274,11 @@ export function buildWebpackBrowser(
274274
}
275275

276276
// Fix incorrectly set `initial` value on chunks.
277-
const extraEntryPoints = normalizeExtraEntryPoints(options.styles || [], 'styles')
278-
.concat(normalizeExtraEntryPoints(options.scripts || [], 'scripts'));
277+
const extraEntryPoints = [
278+
...normalizeExtraEntryPoints(options.styles || [], 'styles'),
279+
...normalizeExtraEntryPoints(options.scripts || [], 'scripts'),
280+
];
281+
279282
const webpackStats = {
280283
...webpackRawStats,
281284
chunks: markAsyncChunksNonInitial(webpackRawStats, extraEntryPoints),

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,10 +361,15 @@ export function getCommonConfig(wco: WebpackConfigOptions): Configuration {
361361
);
362362
}
363363

364-
if (!differentialLoadingMode) {
364+
if (buildOptions.budgets.length && !differentialLoadingMode) {
365365
// Budgets are computed after differential builds, not via a plugin.
366366
// https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/build_angular/src/browser/index.ts
367-
extraPlugins.push(new BundleBudgetPlugin({ budgets: buildOptions.budgets }));
367+
const extraEntryPoints = [
368+
...normalizeExtraEntryPoints(buildOptions.styles || [], 'styles'),
369+
...normalizeExtraEntryPoints(buildOptions.scripts || [], 'scripts'),
370+
];
371+
372+
extraPlugins.push(new BundleBudgetPlugin({ budgets: buildOptions.budgets, extraEntryPoints }));
368373
}
369374

370375
if ((scriptsSourceMap || stylesSourceMap)) {

packages/angular_devkit/build_angular/src/webpack/plugins/bundle-budget.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ import { Budget } from '../../browser/schema';
1010
import { ThresholdSeverity, checkBudgets } from '../../utils/bundle-calculator';
1111
import { ProcessBundleResult } from '../../utils/process-bundle';
1212
import { addError, addWarning } from '../../utils/webpack-diagnostics';
13+
import { markAsyncChunksNonInitial } from '../utils/async-chunks';
14+
import { NormalizedEntryPoint } from '../utils/helpers';
1315

1416
export interface BundleBudgetPluginOptions {
1517
budgets: Budget[];
18+
extraEntryPoints: NormalizedEntryPoint[];
1619
}
1720

1821
export class BundleBudgetPlugin {
@@ -30,7 +33,10 @@ export class BundleBudgetPlugin {
3033
// builds are disabled.
3134
const processResults: ProcessBundleResult[] = [];
3235

36+
// Fix incorrectly set `initial` value on chunks.
3337
const stats = compilation.getStats().toJson();
38+
stats.chunks = markAsyncChunksNonInitial(stats, this.options.extraEntryPoints);
39+
3440
for (const { severity, message } of checkBudgets(budgets, stats, processResults)) {
3541
switch (severity) {
3642
case ThresholdSeverity.Warning:

packages/angular_devkit/build_angular/src/webpack/utils/async-chunks.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88
import * as webpack from 'webpack';
9-
import { NormalizedEntryPoint } from '../configs';
9+
import { NormalizedEntryPoint } from './helpers';
1010

1111
/**
1212
* Webpack stats may incorrectly mark extra entry points `initial` chunks, when

0 commit comments

Comments
 (0)