Home / Function/ resolvePackageData() — vite Function Reference

resolvePackageData() — vite Function Reference

Architecture documentation for the resolvePackageData() function in packages.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  170ceb82_4bf1_2290_1f2e_bbdec11e5184["resolvePackageData()"]
  dff9cadb_1e8c_7fc9_4119_a173f1f21cbd["packages.ts"]
  170ceb82_4bf1_2290_1f2e_bbdec11e5184 -->|defined in| dff9cadb_1e8c_7fc9_4119_a173f1f21cbd
  0d9f6ef1_e83d_dc1d_d305_6a3df47149f2["expandGlobIds()"]
  0d9f6ef1_e83d_dc1d_d305_6a3df47149f2 -->|calls| 170ceb82_4bf1_2290_1f2e_bbdec11e5184
  aea061f1_a9fb_f743_6171_1c7464fe1587["nestedResolveBasedir()"]
  aea061f1_a9fb_f743_6171_1c7464fe1587 -->|calls| 170ceb82_4bf1_2290_1f2e_bbdec11e5184
  310b19b4_2716_b45b_716d_edfca3064152["tryNodeResolve()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 170ceb82_4bf1_2290_1f2e_bbdec11e5184
  a2e55a70_b7b6_bce2_e066_aea4c516313e["tryOptimizedResolve()"]
  a2e55a70_b7b6_bce2_e066_aea4c516313e -->|calls| 170ceb82_4bf1_2290_1f2e_bbdec11e5184
  72a3d8a0_24bf_6aad_622c_540620daa22e["getRpdCacheKey()"]
  170ceb82_4bf1_2290_1f2e_bbdec11e5184 -->|calls| 72a3d8a0_24bf_6aad_622c_540620daa22e
  c2d70c8c_c901_2d4f_df10_d0fa8607751f["loadPackageData()"]
  170ceb82_4bf1_2290_1f2e_bbdec11e5184 -->|calls| c2d70c8c_c901_2d4f_df10_d0fa8607751f
  41da51dc_6cf8_6db8_ad13_ab1389b28aec["getRpdCache()"]
  170ceb82_4bf1_2290_1f2e_bbdec11e5184 -->|calls| 41da51dc_6cf8_6db8_ad13_ab1389b28aec
  03d650a1_a149_b59e_5aaa_30a34e11ad10["setRpdCache()"]
  170ceb82_4bf1_2290_1f2e_bbdec11e5184 -->|calls| 03d650a1_a149_b59e_5aaa_30a34e11ad10
  style 170ceb82_4bf1_2290_1f2e_bbdec11e5184 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/packages.ts lines 63–127

export function resolvePackageData(
  pkgName: string,
  basedir: string,
  preserveSymlinks = false,
  packageCache?: PackageCache,
): PackageData | null {
  if (pnp) {
    const cacheKey = getRpdCacheKey(pkgName, basedir, preserveSymlinks)
    if (packageCache?.has(cacheKey)) return packageCache.get(cacheKey)!

    try {
      const pkg = pnp.resolveToUnqualified(pkgName, basedir, {
        considerBuiltins: false,
      })
      if (!pkg) return null

      const pkgData = loadPackageData(path.join(pkg, 'package.json'))
      packageCache?.set(cacheKey, pkgData)
      return pkgData
    } catch {
      return null
    }
  }

  const originalBasedir = basedir
  while (basedir) {
    if (packageCache) {
      const cached = getRpdCache(
        packageCache,
        pkgName,
        basedir,
        originalBasedir,
        preserveSymlinks,
      )
      if (cached) return cached
    }

    const pkg = path.join(basedir, 'node_modules', pkgName, 'package.json')
    try {
      if (fs.existsSync(pkg)) {
        const pkgPath = preserveSymlinks ? pkg : safeRealpathSync(pkg)
        const pkgData = loadPackageData(pkgPath)

        if (packageCache) {
          setRpdCache(
            packageCache,
            pkgData,
            pkgName,
            basedir,
            originalBasedir,
            preserveSymlinks,
          )
        }

        return pkgData
      }
    } catch {}

    const nextBasedir = path.dirname(basedir)
    if (nextBasedir === basedir) break
    basedir = nextBasedir
  }

  return null
}

Domain

Subdomains

Frequently Asked Questions

What does resolvePackageData() do?
resolvePackageData() is a function in the vite codebase, defined in packages/vite/src/node/packages.ts.
Where is resolvePackageData() defined?
resolvePackageData() is defined in packages/vite/src/node/packages.ts at line 63.
What does resolvePackageData() call?
resolvePackageData() calls 4 function(s): getRpdCache, getRpdCacheKey, loadPackageData, setRpdCache.
What calls resolvePackageData()?
resolvePackageData() is called by 4 function(s): expandGlobIds, nestedResolveBasedir, tryNodeResolve, tryOptimizedResolve.

Analyze Your Own Codebase

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

Try Supermodel Free