|
7 | 7 | */
|
8 | 8 |
|
9 | 9 | import { BuilderContext, BuilderOutput, createBuilder } from '@angular-devkit/architect';
|
10 |
| -import type { BuildInvalidate, BuildOptions, OutputFile } from 'esbuild'; |
| 10 | +import type { BuildInvalidate, BuildOptions, Metafile, OutputFile } from 'esbuild'; |
11 | 11 | import assert from 'node:assert';
|
12 | 12 | import * as fs from 'node:fs/promises';
|
13 | 13 | import * as path from 'node:path';
|
@@ -141,6 +141,12 @@ async function execute(
|
141 | 141 | const initialFiles: FileInfo[] = [...codeResults.initialFiles, ...styleResults.initialFiles];
|
142 | 142 | const outputFiles: OutputFile[] = [...codeResults.outputFiles, ...styleResults.outputFiles];
|
143 | 143 |
|
| 144 | + // Combine metafiles used for the stats option as well as bundle budgets and console output |
| 145 | + const metafile = { |
| 146 | + inputs: { ...codeResults.metafile?.inputs, ...styleResults.metafile?.inputs }, |
| 147 | + outputs: { ...codeResults.metafile?.outputs, ...styleResults.metafile?.outputs }, |
| 148 | + }; |
| 149 | + |
144 | 150 | // Generate index HTML file
|
145 | 151 | if (indexHtmlOptions) {
|
146 | 152 | // Create an index HTML generator that reads from the in-memory output files
|
@@ -191,6 +197,10 @@ async function execute(
|
191 | 197 | await Promise.all(
|
192 | 198 | outputFiles.map((file) => fs.writeFile(path.join(outputPath, file.path), file.contents)),
|
193 | 199 | );
|
| 200 | + // Write metafile if stats option is enabled |
| 201 | + if (options.stats) { |
| 202 | + await fs.writeFile(path.join(outputPath, 'stats.json'), JSON.stringify(metafile, null, 2)); |
| 203 | + } |
194 | 204 |
|
195 | 205 | // Augment the application with service worker support
|
196 | 206 | // TODO: This should eventually operate on the in-memory files prior to writing the output files
|
@@ -258,6 +268,7 @@ function createCodeBundleOptions(
|
258 | 268 | mainFields: ['es2020', 'browser', 'module', 'main'],
|
259 | 269 | conditions: ['es2020', 'es2015', 'module'],
|
260 | 270 | resolveExtensions: ['.ts', '.tsx', '.mjs', '.js'],
|
| 271 | + metafile: true, |
261 | 272 | logLevel: options.verbose ? 'debug' : 'silent',
|
262 | 273 | minify: optimizationOptions.scripts,
|
263 | 274 | pure: ['forwardRef'],
|
|
0 commit comments