Home / Function/ preview() — vite Function Reference

preview() — vite Function Reference

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

Function typescript ViteCore ConfigEngine calls 24 called by 1

Entity Profile

Dependency Diagram

graph TD
  5c50110b_5c76_c14f_b1dd_3efd3df7f375["preview()"]
  e49f0ff7_5101_3a1d_5a1f_33fae58eea2d["preview.ts"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|defined in| e49f0ff7_5101_3a1d_5a1f_33fae58eea2d
  2266752d_540e_31d7_052e_4f7e30fccb4c["createPreviewServerWithPlugin()"]
  2266752d_540e_31d7_052e_4f7e30fccb4c -->|calls| 5c50110b_5c76_c14f_b1dd_3efd3df7f375
  58c4a210_68fe_1b4d_ed49_d59203f97ef1["resolveConfig()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| 58c4a210_68fe_1b4d_ed49_d59203f97ef1
  dfa2b928_25a4_a78f_1e11_1e7e643cae09["resolve()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| dfa2b928_25a4_a78f_1e11_1e7e643cae09
  cb5a4344_4dd4_e836_a83e_593080e6a235["resolveHttpsConfig()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| cb5a4344_4dd4_e836_a83e_593080e6a235
  e66d0fef_de7e_a1f4_2eb6_054a37395337["resolveHttpServer()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| e66d0fef_de7e_a1f4_2eb6_054a37395337
  0c12d8fd_e65d_655d_6d45_310c047bb1ce["setClientErrorHandler()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| 0c12d8fd_e65d_655d_6d45_310c047bb1ce
  82bcdece_2370_d7d0_3f82_ad3703daa682["createServerCloseFn()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| 82bcdece_2370_d7d0_3f82_ad3703daa682
  b132705a_2802_75fc_0fe2_ef5fc567419d["teardownSIGTERMListener()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| b132705a_2802_75fc_0fe2_ef5fc567419d
  3ec61957_fda2_ba92_4de6_372b0e9ebba3["printServerUrls()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| 3ec61957_fda2_ba92_4de6_372b0e9ebba3
  bb1ed403_9d6f_40ac_2626_a66dcdc3a0cb["bindCLIShortcuts()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| bb1ed403_9d6f_40ac_2626_a66dcdc3a0cb
  3f88da68_b583_e08c_2055_912b8ea9c47d["setupSIGTERMListener()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| 3f88da68_b583_e08c_2055_912b8ea9c47d
  aecd0c8a_89cd_9a30_c5a5_c1323dbb1414["hostValidationMiddleware()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| aecd0c8a_89cd_9a30_c5a5_c1323dbb1414
  65695310_3d20_5d70_c2ad_710df99d8481["proxyMiddleware()"]
  5c50110b_5c76_c14f_b1dd_3efd3df7f375 -->|calls| 65695310_3d20_5d70_c2ad_710df99d8481
  style 5c50110b_5c76_c14f_b1dd_3efd3df7f375 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/preview.ts lines 126–307

export async function preview(
  inlineConfig: InlineConfig = {},
): Promise<PreviewServer> {
  const config = await resolveConfig(
    inlineConfig,
    'serve',
    'production',
    'production',
    true,
  )

  const clientOutDir = config.environments.client.build.outDir
  const distDir = path.resolve(config.root, clientOutDir)
  if (
    !fs.existsSync(distDir) &&
    // error if no plugins implement `configurePreviewServer`
    config.plugins.every((plugin) => !plugin.configurePreviewServer) &&
    // error if called in CLI only. programmatic usage could access `httpServer`
    // and affect file serving
    process.argv[1]?.endsWith(path.normalize('bin/vite.js')) &&
    process.argv[2] === 'preview'
  ) {
    throw new Error(
      `The directory "${clientOutDir}" does not exist. Did you build your project?`,
    )
  }

  const httpsOptions = await resolveHttpsConfig(config.preview.https)
  const app = connect() as Connect.Server
  const httpServer = await resolveHttpServer(app, httpsOptions)
  setClientErrorHandler(httpServer, config.logger)

  const options = config.preview
  const logger = config.logger

  const closeHttpServer = createServerCloseFn(httpServer)

  // Promise used by `server.close()` to ensure `closeServer()` is only called once
  let closeServerPromise: Promise<void> | undefined
  const closeServer = async () => {
    teardownSIGTERMListener(closeServerAndExit)
    await closeHttpServer()
    server.resolvedUrls = null
  }

  const server: PreviewServer = {
    config,
    middlewares: app,
    httpServer,
    async close() {
      if (!closeServerPromise) {
        closeServerPromise = closeServer()
      }
      return closeServerPromise
    },
    resolvedUrls: null,
    printUrls() {
      if (server.resolvedUrls) {
        printServerUrls(server.resolvedUrls, options.host, logger.info)
      } else {
        throw new Error('cannot print server URLs before server is listening.')
      }
    },
    bindCLIShortcuts(options) {
      bindCLIShortcuts(server as PreviewServer, options)
    },
  }

  const closeServerAndExit = async (_: unknown, exitCode?: number) => {
    try {
      await server.close()
    } finally {
      process.exitCode ??= exitCode ? 128 + exitCode : undefined
      process.exit()
    }
  }

  setupSIGTERMListener(closeServerAndExit)

  // cors
  const { cors } = config.preview

Domain

Subdomains

Frequently Asked Questions

What does preview() do?
preview() is a function in the vite codebase, defined in packages/vite/src/node/preview.ts.
Where is preview() defined?
preview() is defined in packages/vite/src/node/preview.ts at line 126.
What does preview() call?
preview() calls 24 function(s): baseMiddleware, bindCLIShortcuts, close, createServerCloseFn, getServerUrlByHost, hostValidationMiddleware, htmlFallbackMiddleware, httpServerStart, and 16 more.
What calls preview()?
preview() is called by 1 function(s): createPreviewServerWithPlugin.

Analyze Your Own Codebase

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

Try Supermodel Free