Home / Function/ getViteResolveAlias() — astro Function Reference

getViteResolveAlias() — astro Function Reference

Architecture documentation for the getViteResolveAlias() function in index.ts from the astro codebase.

Entity Profile

Dependency Diagram

graph TD
  73ef4717_0679_8c7f_84fd_7676c8eeb9af["getViteResolveAlias()"]
  7996ca89_cb81_c0ba_4ce2_f1ad1a93890c["index.ts"]
  73ef4717_0679_8c7f_84fd_7676c8eeb9af -->|defined in| 7996ca89_cb81_c0ba_4ce2_f1ad1a93890c
  41c9f435_8602_aa44_336c_21df75b6be30["configAliasVitePlugin()"]
  41c9f435_8602_aa44_336c_21df75b6be30 -->|calls| 73ef4717_0679_8c7f_84fd_7676c8eeb9af
  style 73ef4717_0679_8c7f_84fd_7676c8eeb9af fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/astro/src/vite-plugin-config-alias/index.ts lines 71–114

const getViteResolveAlias = (settings: AstroSettings) => {
	const { tsConfig, tsConfigPath } = settings;
	if (!tsConfig || !tsConfigPath || !tsConfig.compilerOptions) return [];

	const { baseUrl, paths } = tsConfig.compilerOptions as CompilerOptions;
	const effectiveBaseUrl = baseUrl ?? (paths ? '.' : undefined);
	if (!effectiveBaseUrl) return [];

	const resolvedBaseUrl = path.resolve(path.dirname(tsConfigPath), effectiveBaseUrl);
	const aliases: Array<{ find: string | RegExp; replacement: string; customResolver?: any }> = [];

	// Build aliases with custom resolver that tries multiple paths
	if (paths) {
		for (const [aliasPattern, values] of Object.entries(paths)) {
			const resolvedValues = values.map((v) => path.resolve(resolvedBaseUrl, v));

			const customResolver = (id: string) => {
				// Try each path in order
				// id is already the wildcard part (e.g., 'extra.css' for '@styles/*')
				// resolvedValues still have the * in them, so replace * with id
				for (const resolvedValue of resolvedValues) {
					const resolved = resolvedValue.replace('*', id);
					const stats = fs.statSync(resolved, { throwIfNoEntry: false });
					if (stats && stats.isFile()) {
						return normalizePath(resolved);
					}
				}
				return null;
			};

			aliases.push({
				// Build regex from alias pattern (e.g., '@styles/*' -> /^@styles\/(.+)$/)
				// First, escape special regex chars. Then replace * with a capture group (.+)
				find: new RegExp(
					`^${aliasPattern.replace(/[\\^$+?.()|[\]{}]/g, '\\$&').replace(/\*/g, '(.+)')}$`,
				),
				replacement: aliasPattern.includes('*') ? '$1' : aliasPattern,
				customResolver,
			});
		}
	}

	return aliases;
};

Domain

Subdomains

Frequently Asked Questions

What does getViteResolveAlias() do?
getViteResolveAlias() is a function in the astro codebase, defined in packages/astro/src/vite-plugin-config-alias/index.ts.
Where is getViteResolveAlias() defined?
getViteResolveAlias() is defined in packages/astro/src/vite-plugin-config-alias/index.ts at line 71.
What calls getViteResolveAlias()?
getViteResolveAlias() is called by 1 function(s): configAliasVitePlugin.

Analyze Your Own Codebase

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

Try Supermodel Free