preview() — vite Function Reference
Architecture documentation for the preview() function in preview.ts from the vite codebase.
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
Defined In
Calls
- baseMiddleware()
- bindCLIShortcuts()
- close()
- createServerCloseFn()
- getServerUrlByHost()
- hostValidationMiddleware()
- htmlFallbackMiddleware()
- httpServerStart()
- indexHtmlMiddleware()
- normalizePath()
- notFoundMiddleware()
- openBrowser()
- printServerUrls()
- proxyMiddleware()
- resolve()
- resolveConfig()
- resolveHostname()
- resolveHttpServer()
- resolveHttpsConfig()
- resolveServerUrls()
- setClientErrorHandler()
- setupSIGTERMListener()
- shouldServeFile()
- teardownSIGTERMListener()
Called By
Source
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