fix(@angular-devkit/build-angular): add web-workers in lazy chunks in stats output

Web-workers are not marked as `initial` since their initialization can be guarded.

Closes #21059
This commit is contained in:
Alan Agius 2021-06-07 11:33:16 +02:00
parent 2f03e7a049
commit c43ace7383
3 changed files with 27 additions and 27 deletions

View File

@ -143,25 +143,21 @@ async function initialize(
// Assets are processed directly by the builder except when watching // Assets are processed directly by the builder except when watching
const adjustedOptions = options.watch ? options : { ...options, assets: [] }; const adjustedOptions = options.watch ? options : { ...options, assets: [] };
const { const { config, projectRoot, projectSourceRoot, i18n } =
config, await generateI18nBrowserWebpackConfigFromContext(
projectRoot, adjustedOptions,
projectSourceRoot, context,
i18n, (wco) => [
} = await generateI18nBrowserWebpackConfigFromContext( getCommonConfig(wco),
adjustedOptions, getBrowserConfig(wco),
context, getStylesConfig(wco),
(wco) => [ getStatsConfig(wco),
getCommonConfig(wco), getAnalyticsConfig(wco, context),
getBrowserConfig(wco), getCompilerConfig(wco),
getStylesConfig(wco), wco.buildOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
getStatsConfig(wco), ],
getAnalyticsConfig(wco, context), { differentialLoadingNeeded },
getCompilerConfig(wco), );
wco.buildOptions.webWorkerTsConfig ? getWorkerConfig(wco) : {},
],
{ differentialLoadingNeeded },
);
// Validate asset option values if processed directly // Validate asset option values if processed directly
if (options.assets?.length && !adjustedOptions.assets?.length) { if (options.assets?.length && !adjustedOptions.assets?.length) {
@ -803,7 +799,6 @@ function generateBundleInfoStats(
size: bundle.size, size: bundle.size,
files: bundle.map ? [bundle.filename, bundle.map.filename] : [bundle.filename], files: bundle.map ? [bundle.filename, bundle.map.filename] : [bundle.filename],
names: chunk?.names, names: chunk?.names,
entry: !!chunk?.names?.includes('runtime'),
initial: !!chunk?.initial, initial: !!chunk?.initial,
rendered: true, rendered: true,
chunkType, chunkType,

View File

@ -27,7 +27,9 @@ export function markAsyncChunksNonInitial(
// **cannot** be loaded in main bundle. // **cannot** be loaded in main bundle.
const asyncChunkIds = extraEntryPoints const asyncChunkIds = extraEntryPoints
.filter((entryPoint) => !entryPoint.inject) .filter((entryPoint) => !entryPoint.inject)
.flatMap((entryPoint) => entryPoints[entryPoint.bundleName].chunks); .flatMap((entryPoint) =>
entryPoints[entryPoint.bundleName].chunks?.filter((n) => n !== 'runtime'),
);
// Find chunks for each ID. // Find chunks for each ID.
const asyncChunks = asyncChunkIds.map((chunkId) => { const asyncChunks = asyncChunkIds.map((chunkId) => {
@ -41,8 +43,12 @@ export function markAsyncChunksNonInitial(
// A chunk is considered `initial` only if Webpack already belives it to be initial // A chunk is considered `initial` only if Webpack already belives it to be initial
// and the application developer did not mark it async via an extra entry point. // and the application developer did not mark it async via an extra entry point.
return chunks.map((chunk) => ({ return chunks.map((chunk) => {
...chunk, return asyncChunks.find((asyncChunk) => asyncChunk === chunk)
initial: chunk.initial && !asyncChunks.find((asyncChunk) => asyncChunk === chunk), ? {
})); ...chunk,
initial: false,
}
: chunk;
});
} }

View File

@ -45,7 +45,6 @@ export function generateBundleStats(info: {
size?: number; size?: number;
files?: string[]; files?: string[];
names?: string[]; names?: string[];
entry?: boolean;
initial?: boolean; initial?: boolean;
rendered?: boolean; rendered?: boolean;
chunkType?: ChunkType; chunkType?: ChunkType;
@ -57,7 +56,7 @@ export function generateBundleStats(info: {
.map((f) => path.basename(f)) .map((f) => path.basename(f))
.join(', ') ?? ''; .join(', ') ?? '';
const names = info.names?.length ? info.names.join(', ') : '-'; const names = info.names?.length ? info.names.join(', ') : '-';
const initial = !!(info.entry || info.initial); const initial = !!info.initial;
const chunkType = info.chunkType || 'unknown'; const chunkType = info.chunkType || 'unknown';
return { return {