From 342a4ea30e1ab9cbdbe5d6de339c21bdcff1a2c1 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 13 Apr 2023 15:38:09 -0400 Subject: [PATCH] fix(@angular-devkit/build-angular): correctly show initial files in stat table with esbuild builder When using the esbuild-based browser application builder, only actual initial files will be displayed in the initial files section. Previously, certain dynamically imported files could unintentionally be displayed in the stats output table as initial files. This was a display only error and had no effect on the files added to the index HTML file. (cherry picked from commit 571f8947cef06ee2f6004c72fef6c31d55a9b366) --- .../src/builders/browser-esbuild/esbuild.ts | 20 ++++++++++++------- .../src/builders/browser-esbuild/index.ts | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/esbuild.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/esbuild.ts index a0adc2477536..102c19643397 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/esbuild.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/esbuild.ts @@ -103,13 +103,19 @@ export class BundlerContext { outputFile.path = relativeFilePath; if (entryPoint) { - // An entryPoint value indicates an initial file - initialFiles.push({ - file: outputFile.path, - // The first part of the filename is the name of file (e.g., "polyfills" for "polyfills.7S5G3MDY.js") - name: basename(outputFile.path).split('.')[0], - extension: extname(outputFile.path), - }); + // The first part of the filename is the name of file (e.g., "polyfills" for "polyfills.7S5G3MDY.js") + const name = basename(outputFile.path).split('.', 1)[0]; + + // Only entrypoints with an entry in the options are initial files. + // Dynamic imports also have an entryPoint value in the meta file. + if ((this.#esbuildOptions.entryPoints as Record)?.[name]) { + // An entryPoint value indicates an initial file + initialFiles.push({ + file: outputFile.path, + name, + extension: extname(outputFile.path), + }); + } } } diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts index 43170cb326f8..b14e2cfdf58e 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts @@ -765,7 +765,7 @@ function logBuildStats(context: BuilderContext, metafile: Metafile, initialFiles stats.push({ initial: initial.has(file), - stats: [file, initial.get(file) ?? '', output.bytes, ''], + stats: [file, initial.get(file) ?? '-', output.bytes, ''], }); }