Home / Function/ processNodeUrl() — vite Function Reference

processNodeUrl() — vite Function Reference

Architecture documentation for the processNodeUrl() function in indexHtml.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3["processNodeUrl()"]
  3f56d5b2_9fca_532f_3bfc_6bfb2be77015["indexHtml.ts"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|defined in| 3f56d5b2_9fca_532f_3bfc_6bfb2be77015
  c7929a5b_9791_180a_9c0b_4f479fb4cf3f["devHtmlHook()"]
  c7929a5b_9791_180a_9c0b_4f479fb4cf3f -->|calls| 98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3
  c954a0df_af6a_f765_b870_4cba4bf042b4["isBareRelative()"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|calls| c954a0df_af6a_f765_b870_4cba4bf042b4
  bdd49406_d977_da9f_c847_bc5405877a0d["shouldPreTransform()"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|calls| bdd49406_d977_da9f_c847_bc5405877a0d
  1948f092_e5a5_076b_2f59_79ef22dec191["injectQuery()"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|calls| 1948f092_e5a5_076b_2f59_79ef22dec191
  29f999b6_18cf_5f75_7b27_cf12b0774ee0["preTransformRequest()"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|calls| 29f999b6_18cf_5f75_7b27_cf12b0774ee0
  d7438db6_1b57_5dc6_c809_315c4ef7b3d6["processSrcSetSync()"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|calls| d7438db6_1b57_5dc6_c809_315c4ef7b3d6
  983c34fc_39a0_52cc_1c78_f5c74a361a26["get()"]
  98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 -->|calls| 983c34fc_39a0_52cc_1c78_f5c74a361a26
  style 98ce5fcf_1d4d_c6f5_6eed_3bde652f7be3 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/server/middlewares/indexHtml.ts lines 131–200

const processNodeUrl = (
  url: string,
  useSrcSetReplacer: boolean,
  config: ResolvedConfig,
  htmlPath: string,
  originalUrl?: string,
  server?: ViteDevServer,
  isClassicScriptLink?: boolean,
): string => {
  // prefix with base (dev only, base is never relative)
  const replacer = (url: string) => {
    if (
      (url[0] === '/' && url[1] !== '/') ||
      // #3230 if some request url (localhost:3000/a/b) return to fallback html, the relative assets
      // path will add `/a/` prefix, it will caused 404.
      //
      // skip if url contains `:` as it implies a url protocol or Windows path that we don't want to replace.
      //
      // rewrite `./index.js` -> `localhost:5173/a/index.js`.
      // rewrite `../index.js` -> `localhost:5173/index.js`.
      // rewrite `relative/index.js` -> `localhost:5173/a/relative/index.js`.
      ((url[0] === '.' || isBareRelative(url)) &&
        originalUrl &&
        originalUrl !== '/' &&
        htmlPath === '/index.html')
    ) {
      url = path.posix.join(config.base, url)
    }

    let preTransformUrl: string | undefined

    if (!isClassicScriptLink && shouldPreTransform(url, config)) {
      if (url[0] === '/' && url[1] !== '/') {
        preTransformUrl = url
      } else if (url[0] === '.' || isBareRelative(url)) {
        preTransformUrl = path.posix.join(
          config.base,
          path.posix.dirname(htmlPath),
          url,
        )
      }
    }

    if (server) {
      const mod = server.environments.client.moduleGraph.urlToModuleMap.get(
        preTransformUrl || url,
      )
      if (mod && mod.lastHMRTimestamp > 0) {
        url = injectQuery(url, `t=${mod.lastHMRTimestamp}`)
      }
    }

    if (server && preTransformUrl) {
      try {
        preTransformUrl = decodeURI(preTransformUrl)
      } catch {
        // Malformed uri. Skip pre-transform.
        return url
      }
      preTransformRequest(server, preTransformUrl, config.decodedBase)
    }

    return url
  }

  const processedUrl = useSrcSetReplacer
    ? processSrcSetSync(url, ({ url }) => replacer(url))
    : replacer(url)
  return processedUrl
}

Domain

Subdomains

Called By

Frequently Asked Questions

What does processNodeUrl() do?
processNodeUrl() is a function in the vite codebase, defined in packages/vite/src/node/server/middlewares/indexHtml.ts.
Where is processNodeUrl() defined?
processNodeUrl() is defined in packages/vite/src/node/server/middlewares/indexHtml.ts at line 131.
What does processNodeUrl() call?
processNodeUrl() calls 6 function(s): get, injectQuery, isBareRelative, preTransformRequest, processSrcSetSync, shouldPreTransform.
What calls processNodeUrl()?
processNodeUrl() is called by 1 function(s): devHtmlHook.

Analyze Your Own Codebase

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

Try Supermodel Free