Home / Function/ createClientConfigValueReplacer() — vite Function Reference

createClientConfigValueReplacer() — vite Function Reference

Architecture documentation for the createClientConfigValueReplacer() function in clientInjections.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  3928ac07_6613_c9d3_38dd_625918721277["createClientConfigValueReplacer()"]
  706c7fc5_ca45_d178_75a9_66940b856450["clientInjections.ts"]
  3928ac07_6613_c9d3_38dd_625918721277 -->|defined in| 706c7fc5_ca45_d178_75a9_66940b856450
  911f8f87_f452_e725_a168_2bab39345c79["clientInjectionsPlugin()"]
  911f8f87_f452_e725_a168_2bab39345c79 -->|calls| 3928ac07_6613_c9d3_38dd_625918721277
  b2ef9799_cd96_ba83_06a5_28e8fa51363d["getHmrImplementation()"]
  b2ef9799_cd96_ba83_06a5_28e8fa51363d -->|calls| 3928ac07_6613_c9d3_38dd_625918721277
  369388dc_006d_6dcb_70b4_e174e2ad592f["resolveHostname()"]
  3928ac07_6613_c9d3_38dd_625918721277 -->|calls| 369388dc_006d_6dcb_70b4_e174e2ad592f
  2aff86e8_0c9d_22cb_6536_c1321e1aaa1d["isObject()"]
  3928ac07_6613_c9d3_38dd_625918721277 -->|calls| 2aff86e8_0c9d_22cb_6536_c1321e1aaa1d
  43a88687_ed40_ba3a_51ef_35208bc0caa6["escapeReplacement()"]
  3928ac07_6613_c9d3_38dd_625918721277 -->|calls| 43a88687_ed40_ba3a_51ef_35208bc0caa6
  style 3928ac07_6613_c9d3_38dd_625918721277 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/plugins/clientInjections.ts lines 68–134

async function createClientConfigValueReplacer(
  config: ResolvedConfig,
): Promise<(code: string) => string> {
  const resolvedServerHostname = (await resolveHostname(config.server.host))
    .name
  const resolvedServerPort = config.server.port!
  const devBase = config.base

  const serverHost = `${resolvedServerHostname}:${resolvedServerPort}${devBase}`

  let hmrConfig = config.server.hmr
  hmrConfig = isObject(hmrConfig) ? hmrConfig : undefined
  const host = hmrConfig?.host || null
  const protocol = hmrConfig?.protocol || null
  const timeout = hmrConfig?.timeout || 30000
  const overlay = hmrConfig?.overlay !== false
  const isHmrServerSpecified = !!hmrConfig?.server
  const hmrConfigName = path.basename(config.configFile || 'vite.config.js')

  // hmr.clientPort -> hmr.port
  // -> (24678 if middleware mode and HMR server is not specified) -> new URL(import.meta.url).port
  let port = hmrConfig?.clientPort || hmrConfig?.port || null
  if (config.server.middlewareMode && !isHmrServerSpecified) {
    port ||= 24678
  }

  let directTarget = hmrConfig?.host || resolvedServerHostname
  directTarget += `:${hmrConfig?.port || resolvedServerPort}`
  directTarget += devBase

  let hmrBase = devBase
  if (hmrConfig?.path) {
    hmrBase = path.posix.join(hmrBase, hmrConfig.path)
  }

  const modeReplacement = escapeReplacement(config.mode)
  const baseReplacement = escapeReplacement(devBase)
  const serverHostReplacement = escapeReplacement(serverHost)
  const hmrProtocolReplacement = escapeReplacement(protocol)
  const hmrHostnameReplacement = escapeReplacement(host)
  const hmrPortReplacement = escapeReplacement(port)
  const hmrDirectTargetReplacement = escapeReplacement(directTarget)
  const hmrBaseReplacement = escapeReplacement(hmrBase)
  const hmrTimeoutReplacement = escapeReplacement(timeout)
  const hmrEnableOverlayReplacement = escapeReplacement(overlay)
  const hmrConfigNameReplacement = escapeReplacement(hmrConfigName)
  const wsTokenReplacement = escapeReplacement(config.webSocketToken)
  const bundleDevReplacement = escapeReplacement(
    config.experimental.bundledDev || false,
  )

  return (code) =>
    code
      .replace(`__MODE__`, modeReplacement)
      .replace(/__BASE__/g, baseReplacement)
      .replace(`__SERVER_HOST__`, serverHostReplacement)
      .replace(`__HMR_PROTOCOL__`, hmrProtocolReplacement)
      .replace(`__HMR_HOSTNAME__`, hmrHostnameReplacement)
      .replace(`__HMR_PORT__`, hmrPortReplacement)
      .replace(`__HMR_DIRECT_TARGET__`, hmrDirectTargetReplacement)
      .replace(`__HMR_BASE__`, hmrBaseReplacement)
      .replace(`__HMR_TIMEOUT__`, hmrTimeoutReplacement)
      .replace(`__HMR_ENABLE_OVERLAY__`, hmrEnableOverlayReplacement)
      .replace(`__HMR_CONFIG_NAME__`, hmrConfigNameReplacement)
      .replace(`__WS_TOKEN__`, wsTokenReplacement)
      .replaceAll(`__BUNDLED_DEV__`, bundleDevReplacement)
}

Domain

Subdomains

Frequently Asked Questions

What does createClientConfigValueReplacer() do?
createClientConfigValueReplacer() is a function in the vite codebase, defined in packages/vite/src/node/plugins/clientInjections.ts.
Where is createClientConfigValueReplacer() defined?
createClientConfigValueReplacer() is defined in packages/vite/src/node/plugins/clientInjections.ts at line 68.
What does createClientConfigValueReplacer() call?
createClientConfigValueReplacer() calls 3 function(s): escapeReplacement, isObject, resolveHostname.
What calls createClientConfigValueReplacer()?
createClientConfigValueReplacer() is called by 2 function(s): clientInjectionsPlugin, getHmrImplementation.

Analyze Your Own Codebase

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

Try Supermodel Free