Home / Function/ restartServer() — vite Function Reference

restartServer() — vite Function Reference

Architecture documentation for the restartServer() function in index.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  e12a7f9f_5bba_d2ce_ea02_83d281750727["restartServer()"]
  a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e["index.ts"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|defined in| a423a1ed_f7d8_0eb5_9b8f_ddfa7fa8147e
  24ecf2a1_3c09_d451_76f3_9485b4e993f8["_createServer()"]
  24ecf2a1_3c09_d451_76f3_9485b4e993f8 -->|calls| e12a7f9f_5bba_d2ce_ea02_83d281750727
  657661b0_3b17_9113_8464_fda5dfafd706["mergeConfig()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| 657661b0_3b17_9113_8464_fda5dfafd706
  24ecf2a1_3c09_d451_76f3_9485b4e993f8["_createServer()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| 24ecf2a1_3c09_d451_76f3_9485b4e993f8
  0edbbec3_6066_80b2_5f47_367d86a7705f["listen()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| 0edbbec3_6066_80b2_5f47_367d86a7705f
  bb1ed403_9d6f_40ac_2626_a66dcdc3a0cb["bindCLIShortcuts()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| bb1ed403_9d6f_40ac_2626_a66dcdc3a0cb
  8127cae8_510b_1333_1a76_2d21b503c3a6["error()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| 8127cae8_510b_1333_1a76_2d21b503c3a6
  7e22b0a1_210d_c2ca_9a20_17eec3acb06f["info()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| 7e22b0a1_210d_c2ca_9a20_17eec3acb06f
  588e66be_7e6f_859a_bcf2_ecb0b6773d83["close()"]
  e12a7f9f_5bba_d2ce_ea02_83d281750727 -->|calls| 588e66be_7e6f_859a_bcf2_ecb0b6773d83
  style e12a7f9f_5bba_d2ce_ea02_83d281750727 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/server/index.ts lines 1229–1305

async function restartServer(server: ViteDevServer) {
  global.__vite_start_time = performance.now()

  let inlineConfig = server.config.inlineConfig
  if (server._forceOptimizeOnRestart) {
    inlineConfig = mergeConfig(inlineConfig, {
      forceOptimizeDeps: true,
    })
  }

  // Reinit the server by creating a new instance using the same inlineConfig
  // This will trigger a reload of the config file and re-create the plugins and
  // middlewares. We then assign all properties of the new server to the existing
  // server instance and set the user instance to be used in the new server.
  // This allows us to keep the same server instance for the user.
  {
    let newServer: ViteDevServer | null = null
    try {
      // delay ws server listen
      newServer = await _createServer(inlineConfig, {
        listen: false,
        previousEnvironments: server.environments,
        previousShortcutsState: server._shortcutsState,
      })
    } catch (err: any) {
      server.config.logger.error(err.message, {
        timestamp: true,
      })
      server.config.logger.error('server restart failed', { timestamp: true })
      return
    }

    // Detach readline so close handler skips it. Reused to avoid stdin issues
    server._shortcutsState = undefined

    await server.close()

    // Assign new server props to existing server instance
    const middlewares = server.middlewares
    newServer._configServerPort = server._configServerPort
    newServer._currentServerPort = server._currentServerPort
    Object.assign(server, newServer)

    // Keep the same connect instance so app.use(vite.middlewares) works
    // after a restart in middlewareMode (.route is always '/')
    middlewares.stack = newServer.middlewares.stack
    server.middlewares = middlewares

    // Rebind internal server variable so functions reference the user server
    newServer._setInternalServer(server)
  }

  const {
    logger,
    server: { port, middlewareMode },
  } = server.config
  if (!middlewareMode) {
    await server.listen(port, true)
  } else {
    await Promise.all(
      Object.values(server.environments).map((e) => e.listen(server)),
    )
  }
  logger.info('server restarted.', { timestamp: true })

  if (
    (server._shortcutsState as ShortcutsState<ViteDevServer> | undefined)
      ?.options
  ) {
    bindCLIShortcuts(
      server,
      { print: false },
      // Skip environment checks since shortcuts were bound before restart
      true,
    )
  }
}

Domain

Subdomains

Called By

Frequently Asked Questions

What does restartServer() do?
restartServer() is a function in the vite codebase, defined in packages/vite/src/node/server/index.ts.
Where is restartServer() defined?
restartServer() is defined in packages/vite/src/node/server/index.ts at line 1229.
What does restartServer() call?
restartServer() calls 7 function(s): _createServer, bindCLIShortcuts, close, error, info, listen, mergeConfig.
What calls restartServer()?
restartServer() is called by 1 function(s): _createServer.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free