Home / File/ resolve.ts — vite Source File

resolve.ts — vite Source File

Architecture documentation for resolve.ts, a typescript file in the vite codebase. 16 imports, 1 dependents.

File typescript DependencyOptimizer PreBundler 16 imports 1 dependents 4 functions

Entity Profile

Dependency Diagram

graph LR
  f5dd930e_f496_d00c_dda8_8cf9daf4b473["resolve.ts"]
  7da774f9_eca5_d54e_6e01_6bee7d460a2b["config.ts"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 7da774f9_eca5_d54e_6e01_6bee7d460a2b
  eb5604c2_58e1_1c00_5a1a_5d97ea5236ad["ResolvedConfig"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> eb5604c2_58e1_1c00_5a1a_5d97ea5236ad
  031bc221_67a8_c579_f2bf_bb30a08beeb2["utils.ts"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 031bc221_67a8_c579_f2bf_bb30a08beeb2
  5e378bd7_4558_94a6_54bf_d9742f54d2e9["escapeRegex"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 5e378bd7_4558_94a6_54bf_d9742f54d2e9
  cb293321_1174_554d_b5ce_f153b06a2fb4["getNpmPackageName"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> cb293321_1174_554d_b5ce_f153b06a2fb4
  dff9cadb_1e8c_7fc9_4119_a173f1f21cbd["packages.ts"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> dff9cadb_1e8c_7fc9_4119_a173f1f21cbd
  170ceb82_4bf1_2290_1f2e_bbdec11e5184["resolvePackageData"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 170ceb82_4bf1_2290_1f2e_bbdec11e5184
  abfc9e70_3c15_b3f0_a595_3cf27afb7e64["utils.ts"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> abfc9e70_3c15_b3f0_a595_3cf27afb7e64
  f094d39d_cd97_2548_86c3_38902c2f3301["slash"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> f094d39d_cd97_2548_86c3_38902c2f3301
  0c33ff62_54e9_5c90_902b_b26728e71fca["environment.ts"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 0c33ff62_54e9_5c90_902b_b26728e71fca
  7e6f7c83_3515_4e0d_5362_4eb9515b4a86["Environment"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 7e6f7c83_3515_4e0d_5362_4eb9515b4a86
  55b2a3d2_8787_d760_1a76_1d2854a39807["idResolver.ts"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 55b2a3d2_8787_d760_1a76_1d2854a39807
  7ee86c21_2650_c869_2f5d_720909757e00["createBackCompatIdResolver"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 7ee86c21_2650_c869_2f5d_720909757e00
  51e96894_3556_ed5c_1ede_97d449867adf["node:path"]
  f5dd930e_f496_d00c_dda8_8cf9daf4b473 --> 51e96894_3556_ed5c_1ede_97d449867adf
  style f5dd930e_f496_d00c_dda8_8cf9daf4b473 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import path from 'node:path'
import picomatch from 'picomatch'
import { globSync } from 'tinyglobby'
import type { ResolvedConfig } from '../config'
import { escapeRegex, getNpmPackageName } from '../utils'
import { resolvePackageData } from '../packages'
import { slash } from '../../shared/utils'
import type { Environment } from '../environment'
import { createBackCompatIdResolver } from '../idResolver'

export function createOptimizeDepsIncludeResolver(
  environment: Environment,
): (id: string) => Promise<string | undefined> {
  const topLevelConfig = environment.getTopLevelConfig()
  const resolve = createBackCompatIdResolver(topLevelConfig, {
    asSrc: false,
    scan: true,
    packageCache: new Map(),
  })

  return async (id: string) => {
    const lastArrowIndex = id.lastIndexOf('>')
    if (lastArrowIndex === -1) {
      return await resolve(environment, id, undefined)
    }
    // split nested selected id by last '>', for example:
    // 'foo > bar > baz' => 'foo > bar' & 'baz'
    const nestedRoot = id.substring(0, lastArrowIndex).trim()
    const nestedPath = id.substring(lastArrowIndex + 1).trim()
    const basedir = nestedResolveBasedir(
      nestedRoot,
      topLevelConfig.root,
      topLevelConfig.resolve.preserveSymlinks,
    )
    return await resolve(
      environment,
      nestedPath,
      path.resolve(basedir, 'package.json'),
    )
  }
}

/**
 * Expand the glob syntax in `optimizeDeps.include` to proper import paths
 */
export function expandGlobIds(id: string, config: ResolvedConfig): string[] {
  const pkgName = getNpmPackageName(id)
  if (!pkgName) return []

  const pkgData = resolvePackageData(
    pkgName,
    config.root,
    config.resolve.preserveSymlinks,
    config.packageCache,
  )
  if (!pkgData) return []

  const pattern = '.' + id.slice(pkgName.length)
  const exports = pkgData.data.exports

// ... (125 more lines)

Subdomains

Frequently Asked Questions

What does resolve.ts do?
resolve.ts is a source file in the vite codebase, written in typescript. It belongs to the DependencyOptimizer domain, PreBundler subdomain.
What functions are defined in resolve.ts?
resolve.ts defines 4 function(s): createOptimizeDepsIncludeResolver, expandGlobIds, getFirstExportStringValue, nestedResolveBasedir.
What does resolve.ts depend on?
resolve.ts imports 16 module(s): Environment, ResolvedConfig, config.ts, createBackCompatIdResolver, environment.ts, escapeRegex, getNpmPackageName, idResolver.ts, and 8 more.
What files import resolve.ts?
resolve.ts is imported by 1 file(s): index.ts.
Where is resolve.ts in the architecture?
resolve.ts is located at packages/vite/src/node/optimizer/resolve.ts (domain: DependencyOptimizer, subdomain: PreBundler, directory: packages/vite/src/node/optimizer).

Analyze Your Own Codebase

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

Try Supermodel Free