@@ -107,14 +107,7 @@ export function cloudflare(pluginConfig: PluginConfig = {}): vite.Plugin[] {
107107 let containerImageTagsSeen : Set < string > | undefined ;
108108 let runningContainerIds : Array < string > ;
109109
110- // This is needed so that we can tell the difference between the Vite http server closing and restarting.
111- let previousServer : unknown ;
112110 let restartingServer = false ;
113- function updateRestartingServerFlag ( viteDevServer : unknown ) {
114- restartingServer =
115- previousServer !== undefined && viteDevServer !== previousServer ;
116- previousServer = viteDevServer ;
117- }
118111
119112 return [
120113 {
@@ -350,7 +343,17 @@ if (import.meta.hot) {
350343 // Vite `configureServer` Hook
351344 // see https://vite.dev/guide/api-plugin.html#configureserver
352345 async configureServer ( viteDevServer ) {
353- updateRestartingServerFlag ( viteDevServer ) ;
346+ const restartServer = viteDevServer . restart . bind ( viteDevServer ) ;
347+ viteDevServer . restart = async ( ) => {
348+ try {
349+ restartingServer = true ;
350+ debuglog ( configId , "From server.restart(): Restarting server..." ) ;
351+ await restartServer ( ) ;
352+ debuglog ( configId , "From server.restart(): Restarted server..." ) ;
353+ } finally {
354+ restartingServer = false ;
355+ }
356+ } ;
354357 assertIsNotPreview ( resolvedPluginConfig ) ;
355358
356359 // It is possible to get into a situation where the dev server is restarted by a config file change
@@ -426,7 +429,12 @@ if (import.meta.hot) {
426429 return ;
427430 }
428431
429- debuglog ( configId , new Error ( "" ) . stack ) ;
432+ debuglog (
433+ configId ,
434+ new Error ( "" ) . stack ?. includes ( "restartServer" )
435+ ? "From stack trace: restarting server..."
436+ : "From stack trace: creating new server..."
437+ ) ;
430438
431439 if ( ! miniflare ) {
432440 debuglog ( configId , "Creating new Miniflare instance" ) ;
@@ -624,7 +632,6 @@ if (import.meta.hot) {
624632 // Vite `configurePreviewServer` Hook
625633 // see https://vite.dev/guide/api-plugin.html#configurepreviewserver
626634 async configurePreviewServer ( vitePreviewServer ) {
627- updateRestartingServerFlag ( vitePreviewServer ) ;
628635 assertIsPreview ( resolvedPluginConfig ) ;
629636
630637 const inputInspectorPort = await getInputInspectorPortOption (
@@ -719,16 +726,13 @@ if (import.meta.hot) {
719726 runningContainerIds = [ ] ;
720727 }
721728
729+ debuglog ( "buildEnd:" , restartingServer ? "restarted" : "disposing" ) ;
722730 if ( ! restartingServer ) {
723- debuglog ( "Disposing Miniflare instance" ) ;
731+ debuglog ( "buildEnd: disposing Miniflare instance" ) ;
724732 await miniflare ?. dispose ( ) . catch ( ( error ) => {
725- console . error ( "Error disposing Miniflare instance:", error ) ;
733+ debuglog ( "buildEnd: failed to dispose Miniflare instance:", error ) ;
726734 } ) ;
727735 miniflare = undefined ;
728- } else {
729- debuglog (
730- "Vite is restarting so do not dispose of Miniflare instance"
731- ) ;
732736 }
733737 // Reset the flag so that if a `buildEnd` hook is called again before the next
734738 // configureServer hook then we do dispose of miniflare correctly.
0 commit comments