preview() — astro Function Reference
Architecture documentation for the preview() function in index.ts from the astro codebase.
Entity Profile
Dependency Diagram
graph TD b8628b07_1bcc_f8eb_a8bd_dcdbe7975ff2["preview()"] 63facc8f_3f77_a711_93ac_5bdb5f731fce["index.ts"] b8628b07_1bcc_f8eb_a8bd_dcdbe7975ff2 -->|defined in| 63facc8f_3f77_a711_93ac_5bdb5f731fce style b8628b07_1bcc_f8eb_a8bd_dcdbe7975ff2 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/astro/src/core/preview/index.ts lines 24–94
export default async function preview(inlineConfig: AstroInlineConfig): Promise<PreviewServer> {
ensureProcessNodeEnv('production');
const logger = createNodeLogger(inlineConfig);
const { userConfig, astroConfig } = await resolveConfig(inlineConfig ?? {}, 'preview');
telemetry.record(eventCliSession('preview', userConfig));
const _settings = await createSettings(
astroConfig,
inlineConfig.logLevel,
fileURLToPath(astroConfig.root),
);
const settings = await runHookConfigSetup({
settings: _settings,
command: 'preview',
logger: logger,
});
// Create a route manifest so we can know if the build output is a static site or not
await createRoutesList({ settings: settings, cwd: inlineConfig.root }, logger);
await runHookConfigDone({ settings: settings, logger: logger, command: 'preview' });
if (settings.buildOutput === 'static') {
if (!fs.existsSync(settings.config.outDir)) {
const outDirPath = fileURLToPath(settings.config.outDir);
throw new Error(
`[preview] The output directory ${outDirPath} does not exist. Did you run \`astro build\`?`,
);
}
const server = await createStaticPreviewServer(settings, logger);
return server;
}
if (!settings.adapter) {
throw new Error(`[preview] No adapter found.`);
}
if (!settings.adapter.previewEntrypoint) {
throw new Error(
`[preview] The ${settings.adapter.name} adapter does not support the preview command.`,
);
}
// We need to use require.resolve() here so that advanced package managers like pnpm
// don't treat this as a dependency of Astro itself. This correctly resolves the
// preview entrypoint of the integration package, relative to the user's project root.
const require = createRequire(settings.config.root);
const previewEntrypointUrl = pathToFileURL(
require.resolve(settings.adapter.previewEntrypoint.toString()),
).href;
const previewModule = (await import(previewEntrypointUrl)) as Partial<PreviewModule>;
if (typeof previewModule.default !== 'function') {
throw new Error(`[preview] ${settings.adapter.name} cannot preview your app.`);
}
const server = await previewModule.default({
outDir: settings.config.outDir,
client: settings.config.build.client,
server: settings.config.build.server,
serverEntrypoint: new URL(settings.config.build.serverEntry, settings.config.build.server),
host: getResolvedHostForHttpServer(settings.config.server.host),
port: settings.config.server.port,
base: settings.config.base,
logger: new AstroIntegrationLogger(logger.options, settings.adapter.name),
headers: settings.config.server.headers,
root: settings.config.root,
});
return server;
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does preview() do?
preview() is a function in the astro codebase, defined in packages/astro/src/core/preview/index.ts.
Where is preview() defined?
preview() is defined in packages/astro/src/core/preview/index.ts at line 24.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free