Home / Function/ compileAstro() — astro Function Reference

compileAstro() — astro Function Reference

Architecture documentation for the compileAstro() function in compile.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  59d5ea7d_ccd5_fdc2_7a73_cc8ac4e8604a["compileAstro()"]
  a1b2a752_beb5_d4f4_ce1d_6f9443e365d3["compile.ts"]
  59d5ea7d_ccd5_fdc2_7a73_cc8ac4e8604a -->|defined in| a1b2a752_beb5_d4f4_ce1d_6f9443e365d3
  66e8c65c_f904_e726_dc60_4a26d3071e0d["enhanceCompileError()"]
  59d5ea7d_ccd5_fdc2_7a73_cc8ac4e8604a -->|calls| 66e8c65c_f904_e726_dc60_4a26d3071e0d
  style 59d5ea7d_ccd5_fdc2_7a73_cc8ac4e8604a fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/astro/src/vite-plugin-astro/compile.ts lines 27–93

export async function compileAstro({
	compileProps,
	astroFileToCompileMetadata,
	logger,
}: CompileAstroOption): Promise<CompileAstroResult> {
	let transformResult: CompileResult;
	let esbuildResult: ESBuildTransformResult;

	try {
		transformResult = await compile(compileProps);
		// Compile all TypeScript to JavaScript.
		// Also, catches invalid JS/TS in the compiled output before returning.
		esbuildResult = await transformWithEsbuild(transformResult.code, compileProps.filename, {
			...compileProps.viteConfig.esbuild,
			loader: 'ts',
			sourcemap: 'external',
			tsconfigRaw: {
				compilerOptions: {
					// Ensure client:only imports are treeshaken
					verbatimModuleSyntax: false,
					importsNotUsedAsValues: 'remove',
				},
			},
		});
	} catch (err: any) {
		await enhanceCompileError({
			err,
			id: compileProps.filename,
			source: compileProps.source,
			config: compileProps.astroConfig,
			logger: logger,
		});
		throw err;
	}

	const { fileId: file, fileUrl: url } = getFileInfo(
		compileProps.filename,
		compileProps.astroConfig,
	);

	let SUFFIX = '';
	SUFFIX += `\nconst $$file = ${JSON.stringify(file)};\nconst $$url = ${JSON.stringify(
		url,
	)};export { $$file as file, $$url as url };\n`;

	// Add HMR handling in dev mode.
	if (!compileProps.viteConfig.isProduction) {
		let i = 0;
		while (i < transformResult.scripts.length) {
			SUFFIX += `import "${compileProps.filename}?astro&type=script&index=${i}&lang.ts";`;
			i++;
		}
	}

	// Attach compile metadata to map for use by virtual modules
	astroFileToCompileMetadata.set(compileProps.filename, {
		originalCode: compileProps.source,
		css: transformResult.css,
		scripts: transformResult.scripts,
	});

	return {
		...transformResult,
		code: esbuildResult.code + SUFFIX,
		map: esbuildResult.map,
	};
}

Domain

Subdomains

Frequently Asked Questions

What does compileAstro() do?
compileAstro() is a function in the astro codebase, defined in packages/astro/src/vite-plugin-astro/compile.ts.
Where is compileAstro() defined?
compileAstro() is defined in packages/astro/src/vite-plugin-astro/compile.ts at line 27.
What does compileAstro() call?
compileAstro() calls 1 function(s): enhanceCompileError.

Analyze Your Own Codebase

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

Try Supermodel Free