@@ -28,7 +28,7 @@ import {
28
28
logMessages ,
29
29
transformSupportedBrowsersToTargets ,
30
30
} from '../../tools/esbuild/utils' ;
31
- import { checkBudgets } from '../../utils/bundle-calculator' ;
31
+ import { BudgetCalculatorResult , checkBudgets } from '../../utils/bundle-calculator' ;
32
32
import { colors } from '../../utils/color' ;
33
33
import { copyAssets } from '../../utils/copy-assets' ;
34
34
import { getSupportedBrowsers } from '../../utils/supported-browsers' ;
@@ -180,6 +180,37 @@ export async function executeBuild(
180
180
181
181
executionResult . outputFiles . push ( ...outputFiles ) ;
182
182
183
+ const changedFiles =
184
+ rebuildState && executionResult . findChangedFiles ( rebuildState . previousOutputHashes ) ;
185
+
186
+ // Analyze files for bundle budget failures if present
187
+ let budgetFailures : BudgetCalculatorResult [ ] | undefined ;
188
+ if ( options . budgets ) {
189
+ const compatStats = generateBudgetStats ( metafile , initialFiles ) ;
190
+ budgetFailures = [ ...checkBudgets ( options . budgets , compatStats , true ) ] ;
191
+ if ( budgetFailures . length > 0 ) {
192
+ const errors = budgetFailures
193
+ . filter ( ( failure ) => failure . severity === 'error' )
194
+ . map ( ( { message } ) => message ) ;
195
+ const warnings = budgetFailures
196
+ . filter ( ( failure ) => failure . severity !== 'error' )
197
+ . map ( ( { message } ) => message ) ;
198
+
199
+ await printWarningsAndErrorsToConsoleAndAddToResult (
200
+ context ,
201
+ executionResult ,
202
+ warnings ,
203
+ errors ,
204
+ ) ;
205
+ }
206
+ }
207
+
208
+ // Calculate estimated transfer size if scripts are optimized
209
+ let estimatedTransferSizes ;
210
+ if ( optimizationOptions . scripts || optimizationOptions . styles . minify ) {
211
+ estimatedTransferSizes = await calculateEstimatedTransferSizes ( executionResult . outputFiles ) ;
212
+ }
213
+
183
214
// Check metafile for CommonJS module usage if optimizing scripts
184
215
if ( optimizationOptions . scripts ) {
185
216
const messages = checkCommonJSModules ( metafile , options . allowedCommonJsDependencies ) ;
@@ -202,29 +233,6 @@ export async function executeBuild(
202
233
) ;
203
234
}
204
235
205
- // Analyze files for bundle budget failures if present
206
- let budgetFailures ;
207
- if ( options . budgets ) {
208
- const compatStats = generateBudgetStats ( metafile , initialFiles ) ;
209
- budgetFailures = [ ...checkBudgets ( options . budgets , compatStats , true ) ] ;
210
- if ( budgetFailures . length > 0 ) {
211
- await logMessages ( context , {
212
- errors : budgetFailures
213
- . filter ( ( failure ) => failure . severity === 'error' )
214
- . map ( ( failure ) => ( { text : failure . message , location : null } ) ) ,
215
- warnings : budgetFailures
216
- . filter ( ( failure ) => failure . severity !== 'error' )
217
- . map ( ( failure ) => ( { text : failure . message , location : null } ) ) ,
218
- } ) ;
219
- }
220
- }
221
-
222
- // Calculate estimated transfer size if scripts are optimized
223
- let estimatedTransferSizes ;
224
- if ( optimizationOptions . scripts || optimizationOptions . styles . minify ) {
225
- estimatedTransferSizes = await calculateEstimatedTransferSizes ( executionResult . outputFiles ) ;
226
- }
227
-
228
236
// Perform i18n translation inlining if enabled
229
237
let prerenderedRoutes : string [ ] ;
230
238
let errors : string [ ] ;
@@ -251,7 +259,7 @@ export async function executeBuild(
251
259
executionResult . assetFiles . push ( ...result . additionalAssets ) ;
252
260
}
253
261
254
- await printWarningsAndErrorsToConsole ( context , warnings , errors ) ;
262
+ await printWarningsAndErrorsToConsoleAndAddToResult ( context , executionResult , warnings , errors ) ;
255
263
256
264
if ( prerenderOptions ) {
257
265
executionResult . addOutputFile (
@@ -270,8 +278,6 @@ export async function executeBuild(
270
278
context . logger . info ( colors . magenta ( prerenderMsg ) + '\n' ) ;
271
279
}
272
280
273
- const changedFiles =
274
- rebuildState && executionResult . findChangedFiles ( rebuildState . previousOutputHashes ) ;
275
281
logBuildStats (
276
282
context ,
277
283
metafile ,
@@ -293,13 +299,19 @@ export async function executeBuild(
293
299
return executionResult ;
294
300
}
295
301
296
- async function printWarningsAndErrorsToConsole (
302
+ async function printWarningsAndErrorsToConsoleAndAddToResult (
297
303
context : BuilderContext ,
304
+ executionResult : ExecutionResult ,
298
305
warnings : string [ ] ,
299
306
errors : string [ ] ,
300
307
) : Promise < void > {
308
+ const errorMessages = errors . map ( ( text ) => ( { text, location : null } ) ) ;
309
+ if ( errorMessages . length ) {
310
+ executionResult . addErrors ( errorMessages ) ;
311
+ }
312
+
301
313
await logMessages ( context , {
302
- errors : errors . map ( ( text ) => ( { text , location : null } ) ) ,
314
+ errors : errorMessages ,
303
315
warnings : warnings . map ( ( text ) => ( { text, location : null } ) ) ,
304
316
} ) ;
305
317
}
0 commit comments