Home / Function/ configAliasVitePlugin() — astro Function Reference

configAliasVitePlugin() — astro Function Reference

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

Entity Profile

Dependency Diagram

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

Relationship Graph

Source Code

packages/astro/src/vite-plugin-config-alias/index.ts lines 117–170

export default function configAliasVitePlugin({
	settings,
}: {
	settings: AstroSettings;
}): VitePlugin | null {
	const configAlias = getConfigAlias(settings);
	if (!configAlias) return null;

	const plugin: VitePlugin = {
		name: 'astro:tsconfig-alias',
		// use post to only resolve ids that all other plugins before it can't
		enforce: 'post',
		config() {
			// Return vite.resolve.alias config with custom resolvers
			return {
				resolve: {
					alias: getViteResolveAlias(settings),
				},
			};
		},
		resolveId: {
			filter: {
				id: {
					include: configAlias.map((alias) => alias.find),
					exclude: /(?:\0|^virtual:|^astro:)/,
				},
			},
			async handler(id, importer, options) {
				// Handle aliases found from `compilerOptions.paths`. Unlike Vite aliases, tsconfig aliases
				// are best effort only, so we have to manually replace them here, instead of using `vite.resolve.alias`
				for (const alias of configAlias) {
					if (alias.find.test(id)) {
						const updatedId = id.replace(alias.find, alias.replacement);

						// Vite may pass an id with "*" when resolving glob import paths
						// Returning early allows Vite to handle the final resolution
						// See https://github.com/withastro/astro/issues/9258#issuecomment-1838806157
						if (updatedId.includes('*')) {
							return updatedId;
						}

						const resolved = await this.resolve(updatedId, importer, {
							skipSelf: true,
							...options,
						});
						if (resolved) return resolved;
					}
				}
			},
		},
	};

	return plugin;
}

Domain

Subdomains

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free