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
Defined In
Calls
Source
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