@@ -50,6 +50,7 @@ import { CLIENT_DIR, DEFAULT_DEV_PORT } from '../constants'
5050import type { Logger } from '../logger'
5151import { printServerUrls } from '../logger'
5252import { createNoopWatcher , resolveChokidarOptions } from '../watch'
53+ import { initPublicFiles } from '../publicDir'
5354import type { PluginContainer } from './pluginContainer'
5455import { ERR_CLOSED_SERVER , createPluginContainer } from './pluginContainer'
5556import type { WebSocketServer } from './ws'
@@ -378,6 +379,8 @@ export async function _createServer(
378379) : Promise < ViteDevServer > {
379380 const config = await resolveConfig ( inlineConfig , 'serve' )
380381
382+ const initPublicFilesPromise = initPublicFiles ( config )
383+
381384 const { root, server : serverConfig } = config
382385 const httpsOptions = await resolveHttpsConfig ( config . server . https )
383386 const { middlewareMode } = serverConfig
@@ -623,6 +626,8 @@ export async function _createServer(
623626 }
624627 }
625628
629+ const publicFiles = await initPublicFilesPromise
630+
626631 const onHMRUpdate = async ( file : string , configOnly : boolean ) => {
627632 if ( serverConfig . hmr !== false ) {
628633 try {
@@ -639,6 +644,12 @@ export async function _createServer(
639644 const onFileAddUnlink = async ( file : string , isUnlink : boolean ) => {
640645 file = normalizePath ( file )
641646 await container . watchChange ( file , { event : isUnlink ? 'delete' : 'create' } )
647+
648+ if ( config . publicDir && file . startsWith ( config . publicDir ) ) {
649+ publicFiles [ isUnlink ? 'delete' : 'add' ] (
650+ file . slice ( config . publicDir . length ) ,
651+ )
652+ }
642653 await handleFileAddUnlink ( file , server , isUnlink )
643654 await onHMRUpdate ( file , true )
644655 }
@@ -648,7 +659,6 @@ export async function _createServer(
648659 await container . watchChange ( file , { event : 'update' } )
649660 // invalidate module graph cache on file change
650661 moduleGraph . onFileChange ( file )
651-
652662 await onHMRUpdate ( file , false )
653663 } )
654664
@@ -733,7 +743,7 @@ export async function _createServer(
733743 // this applies before the transform middleware so that these files are served
734744 // as-is without transforms.
735745 if ( config . publicDir ) {
736- middlewares . use ( servePublicMiddleware ( server ) )
746+ middlewares . use ( servePublicMiddleware ( server , publicFiles ) )
737747 }
738748
739749 // main transform middleware
0 commit comments