MCPcopy
hub / github.com/vitejs/vite / restartServer

Function restartServer

packages/vite/src/node/server/index.ts:1339–1417  ·  view source on GitHub ↗
(server: ViteDevServer)

Source from the content-addressed store, hash-verified

1337}
1338
1339async function restartServer(server: ViteDevServer) {
1340 global.__vite_start_time = performance.now()
1341
1342 let inlineConfig = server.config.inlineConfig
1343 if (server._forceOptimizeOnRestart) {
1344 inlineConfig = mergeConfig(inlineConfig, {
1345 forceOptimizeDeps: true,
1346 })
1347 }
1348
1349 // Reinit the server by creating a new instance using the same inlineConfig
1350 // This will trigger a reload of the config file and re-create the plugins and
1351 // middlewares. We then assign all properties of the new server to the existing
1352 // server instance and set the user instance to be used in the new server.
1353 // This allows us to keep the same server instance for the user.
1354 {
1355 let newServer: ViteDevServer | null = null
1356 try {
1357 // delay ws server listen
1358 newServer = await _createServer(inlineConfig, {
1359 listen: false,
1360 previousEnvironments: server.environments,
1361 previousShortcutsState: server._shortcutsState,
1362 previousRestartPromise: server._restartPromise,
1363 previousForceOptimizeOnRestart: server._forceOptimizeOnRestart,
1364 })
1365 } catch (err: any) {
1366 server.config.logger.error(err.message, {
1367 timestamp: true,
1368 })
1369 server.config.logger.error('server restart failed', { timestamp: true })
1370 return
1371 }
1372
1373 // Detach readline so close handler skips it. Reused to avoid stdin issues
1374 server._shortcutsState = undefined
1375
1376 await server.close()
1377
1378 // Assign new server props to existing server instance
1379 const middlewares = server.middlewares
1380 newServer._configServerPort = server._configServerPort
1381 newServer._currentServerPort = server._currentServerPort
1382 Object.assign(server, newServer)
1383
1384 // Keep the same connect instance so app.use(vite.middlewares) works
1385 // after a restart in middlewareMode (.route is always '/')
1386 middlewares.stack = newServer.middlewares.stack
1387 server.middlewares = middlewares
1388
1389 // Rebind internal server variable so functions reference the user server
1390 newServer._setInternalServer(server)
1391 }
1392
1393 const {
1394 logger,
1395 server: { port, middlewareMode },
1396 } = server.config

Callers 1

restartFunction · 0.85

Calls 8

mergeConfigFunction · 0.90
bindCLIShortcutsFunction · 0.90
_createServerFunction · 0.85
_setInternalServerMethod · 0.80
errorMethod · 0.65
closeMethod · 0.65
listenMethod · 0.65
infoMethod · 0.65

Tested by

no test coverage detected