Home / Function/ handleHMRUpdate() — vite Function Reference

handleHMRUpdate() — vite Function Reference

Architecture documentation for the handleHMRUpdate() function in hmr.ts from the vite codebase.

Function typescript ViteCore ConfigEngine calls 19 called by 1

Entity Profile

Dependency Diagram

graph TD
  8f73b680_d5b9_383c_f695_c906b80fb1e6["handleHMRUpdate()"]
  18db4f26_79f1_5b7d_b291_4feeaf95538f["hmr.ts"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|defined in| 18db4f26_79f1_5b7d_b291_4feeaf95538f
  24ecf2a1_3c09_d451_76f3_9485b4e993f8["_createServer()"]
  24ecf2a1_3c09_d451_76f3_9485b4e993f8 -->|calls| 8f73b680_d5b9_383c_f695_c906b80fb1e6
  bb180253_0ada_744c_66d8_79e5db023c5c["ignoreDeprecationWarnings()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| bb180253_0ada_744c_66d8_79e5db023c5c
  2ff971ab_04c3_0402_34fc_dc2f5f3103ec["getShortName()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 2ff971ab_04c3_0402_34fc_dc2f5f3103ec
  ff7562f3_f396_12b1_2d0c_c03c1ee28f2c["getEnvFilesForMode()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| ff7562f3_f396_12b1_2d0c_c03c1ee28f2c
  a4adb1a7_cf54_091f_eb63_8217e684a8e1["normalizePath()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| a4adb1a7_cf54_091f_eb63_8217e684a8e1
  2e1469ca_9e59_dcc2_bdc7_05126c765fd0["error()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 2e1469ca_9e59_dcc2_bdc7_05126c765fd0
  1a3bec7b_1a11_316f_5831_a0535b829bbf["withTrailingSlash()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 1a3bec7b_1a11_316f_5831_a0535b829bbf
  dfa2b928_25a4_a78f_1e11_1e7e643cae09["resolve()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| dfa2b928_25a4_a78f_1e11_1e7e643cae09
  74ee9886_2456_3964_e90e_5fc67925229d["monotonicDateNow()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 74ee9886_2456_3964_e90e_5fc67925229d
  6740d01d_d16c_18d3_8598_2b7709d0ddb6["readModifiedFile()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 6740d01d_d16c_18d3_8598_2b7709d0ddb6
  57bd050c_f162_f6af_9491_3a9b3bcd5ca2["set()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 57bd050c_f162_f6af_9491_3a9b3bcd5ca2
  d1f8b612_857c_d18a_b763_92f90bf93d2b["get()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| d1f8b612_857c_d18a_b763_92f90bf93d2b
  48bd1440_14d9_820b_54ca_14e94bd0e603["getSortedHotUpdatePlugins()"]
  8f73b680_d5b9_383c_f695_c906b80fb1e6 -->|calls| 48bd1440_14d9_820b_54ca_14e94bd0e603
  style 8f73b680_d5b9_383c_f695_c906b80fb1e6 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/server/hmr.ts lines 370–628

export async function handleHMRUpdate(
  type: 'create' | 'delete' | 'update',
  file: string,
  server: ViteDevServer,
): Promise<void> {
  const { config } = server
  const mixedModuleGraph = ignoreDeprecationWarnings(() => server.moduleGraph)

  const environments = Object.values(server.environments)
  const shortFile = getShortName(file, config.root)

  const isConfig = file === config.configFile
  const isConfigDependency = config.configFileDependencies.some(
    (name) => file === name,
  )

  const isEnv =
    config.envDir !== false &&
    getEnvFilesForMode(config.mode, config.envDir).includes(file)
  if (isConfig || isConfigDependency || isEnv) {
    // auto restart server
    debugHmr?.(`[config change] ${colors.dim(shortFile)}`)
    config.logger.info(
      colors.green(
        `${normalizePath(
          path.relative(process.cwd(), file),
        )} changed, restarting server...`,
      ),
      { clear: true, timestamp: true },
    )
    try {
      await restartServerWithUrls(server)
    } catch (e) {
      config.logger.error(colors.red(e))
    }
    return
  }

  debugHmr?.(`[file change] ${colors.dim(shortFile)}`)

  // (dev only) the client itself cannot be hot updated.
  if (file.startsWith(withTrailingSlash(normalizedClientDir))) {
    environments.forEach(({ hot }) =>
      hot.send({
        type: 'full-reload',
        path: '*',
        triggeredBy: path.resolve(config.root, file),
      }),
    )
    return
  }

  if (config.experimental.bundledDev) {
    // TODO: support handleHotUpdate / hotUpdate
    return
  }

  const timestamp = monotonicDateNow()
  const contextMeta = {
    type,
    file,
    timestamp,
    read: () => readModifiedFile(file),
    server,
  }
  const hotMap = new Map<
    Environment,
    { options: HotUpdateOptions; error?: Error }
  >()

  for (const environment of Object.values(server.environments)) {
    const mods = new Set(environment.moduleGraph.getModulesByFile(file))
    if (type === 'create') {
      for (const mod of environment.moduleGraph._hasResolveFailedErrorModules) {
        mods.add(mod)
      }
    }
    const options = {
      ...contextMeta,
      modules: [...mods],
    }

Domain

Subdomains

Called By

Frequently Asked Questions

What does handleHMRUpdate() do?
handleHMRUpdate() is a function in the vite codebase, defined in packages/vite/src/node/server/hmr.ts.
Where is handleHMRUpdate() defined?
handleHMRUpdate() is defined in packages/vite/src/node/server/hmr.ts at line 370.
What does handleHMRUpdate() call?
handleHMRUpdate() calls 19 function(s): error, get, getBackwardCompatibleModuleNode, getEnvFilesForMode, getHookHandler, getModulesByFile, getShortName, getSortedHotUpdatePlugins, and 11 more.
What calls handleHMRUpdate()?
handleHMRUpdate() 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