Home / Function/ createIdResolver() — vite Function Reference

createIdResolver() — vite Function Reference

Architecture documentation for the createIdResolver() function in idResolver.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  ad008126_fbbe_c1e5_bb1b_3d9b84539e52["createIdResolver()"]
  55b2a3d2_8787_d760_1a76_1d2854a39807["idResolver.ts"]
  ad008126_fbbe_c1e5_bb1b_3d9b84539e52 -->|defined in| 55b2a3d2_8787_d760_1a76_1d2854a39807
  58c4a210_68fe_1b4d_ed49_d59203f97ef1["resolveConfig()"]
  58c4a210_68fe_1b4d_ed49_d59203f97ef1 -->|calls| ad008126_fbbe_c1e5_bb1b_3d9b84539e52
  7ee86c21_2650_c869_2f5d_720909757e00["createBackCompatIdResolver()"]
  7ee86c21_2650_c869_2f5d_720909757e00 -->|calls| ad008126_fbbe_c1e5_bb1b_3d9b84539e52
  dfa2b928_25a4_a78f_1e11_1e7e643cae09["resolve()"]
  ad008126_fbbe_c1e5_bb1b_3d9b84539e52 -->|calls| dfa2b928_25a4_a78f_1e11_1e7e643cae09
  1abc446c_e46b_1be0_59f5_51bdfded0f6c["createEnvironmentPluginContainer()"]
  ad008126_fbbe_c1e5_bb1b_3d9b84539e52 -->|calls| 1abc446c_e46b_1be0_59f5_51bdfded0f6c
  0ac6860f_bc2f_9818_86d4_22179cc9c8ba["oxcResolvePlugin()"]
  ad008126_fbbe_c1e5_bb1b_3d9b84539e52 -->|calls| 0ac6860f_bc2f_9818_86d4_22179cc9c8ba
  acb05845_9984_6792_9aae_b58486b613b5["resolveId()"]
  ad008126_fbbe_c1e5_bb1b_3d9b84539e52 -->|calls| acb05845_9984_6792_9aae_b58486b613b5
  style ad008126_fbbe_c1e5_bb1b_3d9b84539e52 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/idResolver.ts lines 42–117

export function createIdResolver(
  config: ResolvedConfig,
  options?: Partial<InternalResolveOptions>,
): ResolveIdFn {
  const scan = options?.scan

  const pluginContainerMap = new Map<
    PartialEnvironment,
    EnvironmentPluginContainer
  >()
  async function resolve(
    environment: PartialEnvironment,
    id: string,
    importer?: string,
  ): Promise<PartialResolvedId | null> {
    let pluginContainer = pluginContainerMap.get(environment)
    if (!pluginContainer) {
      pluginContainer = await createEnvironmentPluginContainer(
        environment as Environment,
        [
          // @ts-expect-error  the aliasPlugin uses rollup types
          aliasPlugin({ entries: environment.config.resolve.alias }),
          ...oxcResolvePlugin(
            {
              root: config.root,
              isProduction: config.isProduction,
              isBuild: config.command === 'build',
              asSrc: true,
              preferRelative: false,
              tryIndex: true,
              ...options,
              // Ignore sideEffects and other computations as we only need the id
              idOnly: true,
            },
            environment.config,
          ),
        ],
        undefined,
        false,
      )
      pluginContainerMap.set(environment, pluginContainer)
    }
    return await pluginContainer.resolveId(id, importer, { scan })
  }

  const aliasOnlyPluginContainerMap = new Map<
    PartialEnvironment,
    EnvironmentPluginContainer
  >()
  async function resolveAlias(
    environment: PartialEnvironment,
    id: string,
    importer?: string,
  ): Promise<PartialResolvedId | null> {
    let pluginContainer = aliasOnlyPluginContainerMap.get(environment)
    if (!pluginContainer) {
      pluginContainer = await createEnvironmentPluginContainer(
        environment as Environment,
        // @ts-expect-error  the aliasPlugin uses rollup types
        [aliasPlugin({ entries: environment.config.resolve.alias })],
        undefined,
        false,
      )
      aliasOnlyPluginContainerMap.set(environment, pluginContainer)
    }
    return await pluginContainer.resolveId(id, importer, { scan })
  }

  return async (environment, id, importer, aliasOnly) => {
    const resolveFn = aliasOnly ? resolveAlias : resolve
    // aliasPlugin and resolvePlugin are implemented to function with a Environment only,
    // we cast it as PluginEnvironment to be able to use the pluginContainer
    const resolved = await resolveFn(environment, id, importer)
    return resolved?.id
  }
}

Domain

Subdomains

Frequently Asked Questions

What does createIdResolver() do?
createIdResolver() is a function in the vite codebase, defined in packages/vite/src/node/idResolver.ts.
Where is createIdResolver() defined?
createIdResolver() is defined in packages/vite/src/node/idResolver.ts at line 42.
What does createIdResolver() call?
createIdResolver() calls 4 function(s): createEnvironmentPluginContainer, oxcResolvePlugin, resolve, resolveId.
What calls createIdResolver()?
createIdResolver() is called by 2 function(s): createBackCompatIdResolver, resolveConfig.

Analyze Your Own Codebase

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

Try Supermodel Free