Home / Function/ tryNodeResolve() — vite Function Reference

tryNodeResolve() — vite Function Reference

Architecture documentation for the tryNodeResolve() function in resolve.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  310b19b4_2716_b45b_716d_edfca3064152["tryNodeResolve()"]
  dcff87b0_a8ea_57a2_3b29_a7b8f19986f3["resolve.ts"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|defined in| dcff87b0_a8ea_57a2_3b29_a7b8f19986f3
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b["createIsConfiguredAsExternal()"]
  b2fa7ec5_0e1d_bf18_722b_4bad78d1ff9b -->|calls| 310b19b4_2716_b45b_716d_edfca3064152
  363641b4_de9b_dbe1_f421_1fd46e488386["nodeResolveWithVite()"]
  363641b4_de9b_dbe1_f421_1fd46e488386 -->|calls| 310b19b4_2716_b45b_716d_edfca3064152
  18626e4c_2392_d64e_6551_5d524a5d0253["fetchModule()"]
  18626e4c_2392_d64e_6551_5d524a5d0253 -->|calls| 310b19b4_2716_b45b_716d_edfca3064152
  10b9dea8_362c_1af2_93be_afa4dd9aed9e["cleanUrl()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 10b9dea8_362c_1af2_93be_afa4dd9aed9e
  5d2580c9_3b65_7396_afe1_ab2aa13f8ed9["isBuiltin()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 5d2580c9_3b65_7396_afe1_ab2aa13f8ed9
  31b651d6_9d57_14b0_2e8c_d85642bc19f4["findNearestPackageData()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 31b651d6_9d57_14b0_2e8c_d85642bc19f4
  170ceb82_4bf1_2290_1f2e_bbdec11e5184["resolvePackageData()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 170ceb82_4bf1_2290_1f2e_bbdec11e5184
  d0858125_c73b_0a0a_6dee_ba3fba7e64aa["findNearestMainPackageData()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| d0858125_c73b_0a0a_6dee_ba3fba7e64aa
  cb293321_1174_554d_b5ce_f153b06a2fb4["getNpmPackageName()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| cb293321_1174_554d_b5ce_f153b06a2fb4
  d85d2c88_bba8_7bb8_8124_cb7eb5324a02["canExternalizeFile()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| d85d2c88_bba8_7bb8_8124_cb7eb5324a02
  0b337126_5c19_f205_45cd_5ce740e74c86["findNearestPackagePath()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 0b337126_5c19_f205_45cd_5ce740e74c86
  50ac7e51_9f94_e985_bfec_ae95273b23b0["isInNodeModules()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 50ac7e51_9f94_e985_bfec_ae95273b23b0
  908e9e35_950f_ad37_ffa9_0058622aa7e8["isOptimizable()"]
  310b19b4_2716_b45b_716d_edfca3064152 -->|calls| 908e9e35_950f_ad37_ffa9_0058622aa7e8
  style 310b19b4_2716_b45b_716d_edfca3064152 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/plugins/resolve.ts lines 687–846

export function tryNodeResolve(
  id: string,
  importer: string | null | undefined,
  options: InternalResolveOptions,
  depsOptimizer?: DepsOptimizer,
  externalize?: boolean,
): PartialResolvedId | undefined {
  const { root, dedupe, isBuild, preserveSymlinks, packageCache } = options

  // check for deep import, e.g. "my-lib/foo"
  const deepMatch = deepImportRE.exec(id)
  // package name doesn't include postfixes
  // trim them to support importing package with queries (e.g. `import css from 'normalize.css?inline'`)
  const pkgId = deepMatch ? deepMatch[1] || deepMatch[2] : cleanUrl(id)

  let basedir: string
  if (dedupe.includes(pkgId)) {
    basedir = root
  } else if (
    importer &&
    path.isAbsolute(importer) &&
    // css processing appends `*` for importer
    (importer.endsWith('*') || fs.existsSync(cleanUrl(importer)))
  ) {
    basedir = path.dirname(importer)
  } else {
    basedir = root
  }

  const isModuleBuiltin = (id: string) => isBuiltin(options.builtins, id)

  let selfPkg = null
  if (!isModuleBuiltin(id) && !id.includes('\0') && bareImportRE.test(id)) {
    // check if it's a self reference dep.
    const selfPackageData = findNearestPackageData(basedir, packageCache)
    selfPkg =
      selfPackageData?.data.exports && selfPackageData.data.name === pkgId
        ? selfPackageData
        : null
  }

  const pkg =
    selfPkg ||
    resolvePackageData(pkgId, basedir, preserveSymlinks, packageCache)
  if (!pkg) {
    // if import can't be found, check if it's an optional peer dep.
    // if so, we can resolve to a special id that errors only when imported.
    if (
      !options.disableOptionalPeerDepHandling &&
      basedir !== root && // root has no peer dep
      !isModuleBuiltin(id) &&
      !id.includes('\0') &&
      bareImportRE.test(id)
    ) {
      const mainPkg = findNearestMainPackageData(basedir, packageCache)?.data
      if (mainPkg) {
        const pkgName = getNpmPackageName(id)
        if (
          pkgName != null &&
          mainPkg.peerDependencies?.[pkgName] &&
          mainPkg.peerDependenciesMeta?.[pkgName]?.optional
        ) {
          return {
            id: `${optionalPeerDepId}:${id}:${mainPkg.name}`,
          }
        }
      }
    }
    return
  }

  const resolveId = deepMatch ? resolveDeepImport : resolvePackageEntry
  const unresolvedId = deepMatch ? '.' + id.slice(pkgId.length) : id

  let resolved = resolveId(unresolvedId, pkg, options, externalize)
  if (!resolved) {
    return
  }

  const processResult = (resolved: PartialResolvedId) => {
    if (!externalize) {

Domain

Subdomains

Frequently Asked Questions

What does tryNodeResolve() do?
tryNodeResolve() is a function in the vite codebase, defined in packages/vite/src/node/plugins/resolve.ts.
Where is tryNodeResolve() defined?
tryNodeResolve() is defined in packages/vite/src/node/plugins/resolve.ts at line 687.
What does tryNodeResolve() call?
tryNodeResolve() calls 11 function(s): canExternalizeFile, cleanUrl, findNearestMainPackageData, findNearestPackageData, findNearestPackagePath, getNpmPackageName, injectQuery, isBuiltin, and 3 more.
What calls tryNodeResolve()?
tryNodeResolve() is called by 3 function(s): createIsConfiguredAsExternal, fetchModule, nodeResolveWithVite.

Analyze Your Own Codebase

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

Try Supermodel Free