Home / Function/ servePublicMiddleware() — vite Function Reference

servePublicMiddleware() — vite Function Reference

Architecture documentation for the servePublicMiddleware() function in static.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339["servePublicMiddleware()"]
  d91d6c8f_e2c2_3b92_12c3_391c9ba06183["static.ts"]
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 -->|defined in| d91d6c8f_e2c2_3b92_12c3_391c9ba06183
  24ecf2a1_3c09_d451_76f3_9485b4e993f8["_createServer()"]
  24ecf2a1_3c09_d451_76f3_9485b4e993f8 -->|calls| a7dae3c6_6c90_d5b1_7a7e_6ba70a059339
  449af0c1_44a5_1ad5_ce35_a183c1ef89e6["sirvOptions()"]
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 -->|calls| 449af0c1_44a5_1ad5_ce35_a183c1ef89e6
  10b9dea8_362c_1af2_93be_afa4dd9aed9e["cleanUrl()"]
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 -->|calls| 10b9dea8_362c_1af2_93be_afa4dd9aed9e
  a4adb1a7_cf54_091f_eb63_8217e684a8e1["normalizePath()"]
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 -->|calls| a4adb1a7_cf54_091f_eb63_8217e684a8e1
  13d1ff08_16f8_81bc_1a7a_cd281614a4d3["isImportRequest()"]
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 -->|calls| 13d1ff08_16f8_81bc_1a7a_cd281614a4d3
  02cc1763_d5fc_6d3a_58ef_310caf680b7e["isInternalRequest()"]
  a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 -->|calls| 02cc1763_d5fc_6d3a_58ef_310caf680b7e
  style a7dae3c6_6c90_d5b1_7a7e_6ba70a059339 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/server/middlewares/static.ts lines 80–122

export function servePublicMiddleware(
  server: ViteDevServer,
  publicFiles?: Set<string>,
): Connect.NextHandleFunction {
  const dir = server.config.publicDir
  const serve = sirv(
    dir,
    sirvOptions({
      config: server.config,
      getHeaders: () => server.config.server.headers,
      disableFsServeCheck: true,
    }),
  )

  const toFilePath = (url: string) => {
    let filePath = cleanUrl(url)
    if (filePath.indexOf('%') !== -1) {
      try {
        filePath = decodeURI(filePath)
      } catch {
        /* malform uri */
      }
    }
    return normalizePath(filePath)
  }

  // Keep the named function. The name is visible in debug logs via `DEBUG=connect:dispatcher ...`
  return function viteServePublicMiddleware(req, res, next) {
    // To avoid the performance impact of `existsSync` on every request, we check against an
    // in-memory set of known public files. This set is updated on restarts.
    // also skip import request and internal requests `/@fs/ /@vite-client` etc...
    if (
      (publicFiles && !publicFiles.has(toFilePath(req.url!))) ||
      isImportRequest(req.url!) ||
      isInternalRequest(req.url!) ||
      // for `/public-file.js?url` to be transformed
      urlRE.test(req.url!)
    ) {
      return next()
    }
    serve(req, res, next)
  }
}

Domain

Subdomains

Called By

Frequently Asked Questions

What does servePublicMiddleware() do?
servePublicMiddleware() is a function in the vite codebase, defined in packages/vite/src/node/server/middlewares/static.ts.
Where is servePublicMiddleware() defined?
servePublicMiddleware() is defined in packages/vite/src/node/server/middlewares/static.ts at line 80.
What does servePublicMiddleware() call?
servePublicMiddleware() calls 5 function(s): cleanUrl, isImportRequest, isInternalRequest, normalizePath, sirvOptions.
What calls servePublicMiddleware()?
servePublicMiddleware() 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