@@ -65,6 +65,7 @@ import {
6565 serveStaticMiddleware
6666} from './middlewares/static'
6767import { timeMiddleware } from './middlewares/time'
68+ import type { ModuleNode } from './moduleGraph'
6869import { ModuleGraph } from './moduleGraph'
6970import { errorMiddleware , prepareError } from './middlewares/error'
7071import type { HmrOptions } from './hmr'
@@ -245,6 +246,11 @@ export interface ViteDevServer {
245246 * Mutates the given SSR error by rewriting the stacktrace
246247 */
247248 ssrFixStacktrace ( e : Error ) : void
249+ /**
250+ * Triggers HMR for a module in the module graph. You can use the `server.moduleGraph`
251+ * API to retrieve the module to be reloaded. If `hmr` is false, this is a no-op.
252+ */
253+ reloadModule ( module : ModuleNode ) : Promise < void >
248254 /**
249255 * Start the server.
250256 */
@@ -382,6 +388,11 @@ export async function createServer(
382388 ssrRewriteStacktrace ( stack : string ) {
383389 return ssrRewriteStacktrace ( stack , moduleGraph )
384390 } ,
391+ async reloadModule ( module ) {
392+ if ( serverConfig . hmr !== false && module . file ) {
393+ updateModules ( module . file , [ module ] , Date . now ( ) , server )
394+ }
395+ } ,
385396 async listen ( port ?: number , isRestart ?: boolean ) {
386397 await startServer ( server , port , isRestart )
387398 if ( httpServer ) {
0 commit comments