static-preview-server.ts — astro Source File
Architecture documentation for static-preview-server.ts, a typescript file in the astro codebase. 9 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR bf1307cf_9863_81da_aef9_4f34d8a84d2e["static-preview-server.ts"] e9b74c5a_8d34_34a7_e196_5e41b87214aa["../types/astro.js"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> e9b74c5a_8d34_34a7_e196_5e41b87214aa d3861967_b647_84d2_ff48_15013353bd56["../core/logger/core.js"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> d3861967_b647_84d2_ff48_15013353bd56 8db17b08_b9e5_db7e_cd39_46be76c6d5ad["../core/messages.js"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> 8db17b08_b9e5_db7e_cd39_46be76c6d5ad 8cf28db7_8f58_521d_48ac_0a62be28c962["./util.js"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> 8cf28db7_8f58_521d_48ac_0a62be28c962 8c70344e_a2f9_dd1b_f56a_c3cd56c0274b["./vite-plugin-astro-preview.js"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> 8c70344e_a2f9_dd1b_f56a_c3cd56c0274b c2f6615e_96e9_c4eb_5f71_cf120e271705["node:http"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> c2f6615e_96e9_c4eb_5f71_cf120e271705 253d3b9c_f382_44a6_02fa_ae7052447d04["node:perf_hooks"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> 253d3b9c_f382_44a6_02fa_ae7052447d04 d9a92db9_c95e_9165_13ac_24b3d859d946["node:url"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> d9a92db9_c95e_9165_13ac_24b3d859d946 263e522e_1aa5_ebc3_e7d6_45ebc51671f7["vite"] bf1307cf_9863_81da_aef9_4f34d8a84d2e --> 263e522e_1aa5_ebc3_e7d6_45ebc51671f7 style bf1307cf_9863_81da_aef9_4f34d8a84d2e fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type http from 'node:http';
import { performance } from 'node:perf_hooks';
import { fileURLToPath } from 'node:url';
import type * as vite from 'vite';
import { preview, type PreviewServer as VitePreviewServer } from 'vite';
import type { AstroSettings } from '../../types/astro.js';
import type { Logger } from '../logger/core.js';
import * as msg from '../messages.js';
import { getResolvedHostForHttpServer } from './util.js';
import { vitePluginAstroPreview } from './vite-plugin-astro-preview.js';
interface PreviewServer {
host?: string;
port: number;
server: http.Server;
closed(): Promise<void>;
stop(): Promise<void>;
}
export default async function createStaticPreviewServer(
settings: AstroSettings,
logger: Logger,
): Promise<PreviewServer> {
const startServerTime = performance.now();
let previewServer: VitePreviewServer;
try {
previewServer = await preview({
configFile: false,
base: settings.config.base,
appType: 'mpa',
build: {
outDir: fileURLToPath(settings.config.outDir),
},
root: fileURLToPath(settings.config.root),
preview: {
host: settings.config.server.host,
port: settings.config.server.port,
headers: settings.config.server.headers,
open: settings.config.server.open,
allowedHosts: settings.config.server.allowedHosts,
},
plugins: [vitePluginAstroPreview(settings)],
});
} catch (err) {
if (err instanceof Error) {
logger.error(null, err.stack || err.message);
}
throw err;
}
// Set up shortcuts
const customShortcuts: Array<vite.CLIShortcut> = [
// Disable default Vite shortcuts that don't work well with Astro
{ key: 'r', description: '' },
{ key: 'u', description: '' },
{ key: 'c', description: '' },
{ key: 's', description: '' },
];
previewServer.bindCLIShortcuts({
customShortcuts,
});
// Log server start URLs
logger.info(
'SKIP_FORMAT',
msg.serverStart({
startupTime: performance.now() - startServerTime,
resolvedUrls: previewServer.resolvedUrls ?? { local: [], network: [] },
host: settings.config.server.host,
base: settings.config.base,
}),
);
// Resolves once the server is closed
function closed() {
return new Promise<void>((resolve, reject) => {
previewServer.httpServer.addListener('close', resolve);
previewServer.httpServer.addListener('error', reject);
});
}
return {
host: getResolvedHostForHttpServer(settings.config.server.host),
port: settings.config.server.port,
closed,
server: previewServer.httpServer as http.Server,
stop: previewServer.close.bind(previewServer),
};
}
Domain
Subdomains
Functions
Types
Dependencies
- ../core/logger/core.js
- ../core/messages.js
- ../types/astro.js
- ./util.js
- ./vite-plugin-astro-preview.js
- node:http
- node:perf_hooks
- node:url
- vite
Source
Frequently Asked Questions
What does static-preview-server.ts do?
static-preview-server.ts is a source file in the astro codebase, written in typescript. It belongs to the CoreAstro domain, RenderingEngine subdomain.
What functions are defined in static-preview-server.ts?
static-preview-server.ts defines 1 function(s): createStaticPreviewServer.
What does static-preview-server.ts depend on?
static-preview-server.ts imports 9 module(s): ../core/logger/core.js, ../core/messages.js, ../types/astro.js, ./util.js, ./vite-plugin-astro-preview.js, node:http, node:perf_hooks, node:url, and 1 more.
Where is static-preview-server.ts in the architecture?
static-preview-server.ts is located at packages/astro/src/core/preview/static-preview-server.ts (domain: CoreAstro, subdomain: RenderingEngine, directory: packages/astro/src/core/preview).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free