Skip to content

Commit b8dbf3f

Browse files
Copilothi-ogawa
andcommitted
Improve build phase logging to make each step clear
Co-authored-by: hi-ogawa <[email protected]>
1 parent d789c94 commit b8dbf3f

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

packages/plugin-rsc/src/plugin.ts

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,20 +270,64 @@ export default function vitePluginRsc(
270270
const manager = new RscPluginManager()
271271

272272
const buildApp: NonNullable<BuilderOptions['buildApp']> = async (builder) => {
273+
const wrapLogger = (environment: any, phase: string) => {
274+
const originalLogger = environment.logger
275+
const wrappedLogger = {
276+
...originalLogger,
277+
info: (msg: string, options?: any) => {
278+
// Replace generic build messages with phase-specific ones
279+
if (
280+
msg.includes('building for production') ||
281+
msg.includes('building SSR bundle for production')
282+
) {
283+
msg = msg.replace(
284+
/building (for production|SSR bundle for production)/,
285+
`building ${phase}`,
286+
)
287+
}
288+
originalLogger.info(msg, options)
289+
},
290+
}
291+
environment.logger = wrappedLogger
292+
return () => {
293+
environment.logger = originalLogger
294+
}
295+
}
296+
273297
// no-ssr case
274298
// rsc -> client -> rsc -> client
275299
if (!builder.environments.ssr?.config.build.rollupOptions.input) {
276300
manager.isScanBuild = true
277301
builder.environments.rsc!.config.build.write = false
278302
builder.environments.client!.config.build.write = false
303+
let restore = wrapLogger(
304+
builder.environments.rsc!,
305+
'RSC bundle (analyze client references)',
306+
)
279307
await builder.build(builder.environments.rsc!)
308+
restore()
309+
restore = wrapLogger(
310+
builder.environments.client!,
311+
'client bundle (analyze dependencies)',
312+
)
280313
await builder.build(builder.environments.client!)
314+
restore()
281315
manager.isScanBuild = false
282316
builder.environments.rsc!.config.build.write = true
283317
builder.environments.client!.config.build.write = true
318+
restore = wrapLogger(
319+
builder.environments.rsc!,
320+
'RSC bundle for production',
321+
)
284322
await builder.build(builder.environments.rsc!)
323+
restore()
285324
manager.stabilize()
325+
restore = wrapLogger(
326+
builder.environments.client!,
327+
'client bundle for production',
328+
)
286329
await builder.build(builder.environments.client!)
330+
restore()
287331
writeAssetsManifest(['rsc'])
288332
return
289333
}
@@ -292,15 +336,34 @@ export default function vitePluginRsc(
292336
manager.isScanBuild = true
293337
builder.environments.rsc!.config.build.write = false
294338
builder.environments.ssr!.config.build.write = false
339+
let restore = wrapLogger(
340+
builder.environments.rsc!,
341+
'RSC bundle (analyze client references)',
342+
)
295343
await builder.build(builder.environments.rsc!)
344+
restore()
345+
restore = wrapLogger(
346+
builder.environments.ssr!,
347+
'SSR bundle (analyze dependencies)',
348+
)
296349
await builder.build(builder.environments.ssr!)
350+
restore()
297351
manager.isScanBuild = false
298352
builder.environments.rsc!.config.build.write = true
299353
builder.environments.ssr!.config.build.write = true
354+
restore = wrapLogger(builder.environments.rsc!, 'RSC bundle for production')
300355
await builder.build(builder.environments.rsc!)
356+
restore()
301357
manager.stabilize()
358+
restore = wrapLogger(
359+
builder.environments.client!,
360+
'client bundle for production',
361+
)
302362
await builder.build(builder.environments.client!)
363+
restore()
364+
restore = wrapLogger(builder.environments.ssr!, 'SSR bundle for production')
303365
await builder.build(builder.environments.ssr!)
366+
restore()
304367
writeAssetsManifest(['ssr', 'rsc'])
305368
}
306369

0 commit comments

Comments
 (0)