resolveDeepImport() — vite Function Reference
Architecture documentation for the resolveDeepImport() function in resolve.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25["resolveDeepImport()"] dcff87b0_a8ea_57a2_3b29_a7b8f19986f3["resolve.ts"] b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 -->|defined in| dcff87b0_a8ea_57a2_3b29_a7b8f19986f3 2aff86e8_0c9d_22cb_6536_c1321e1aaa1d["isObject()"] b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 -->|calls| 2aff86e8_0c9d_22cb_6536_c1321e1aaa1d 09d0a948_4a89_8bbc_50ce_129fc70dbd66["splitFileAndPostfix()"] b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 -->|calls| 09d0a948_4a89_8bbc_50ce_129fc70dbd66 c10abc49_1d0c_ffeb_c31f_9afc51ce808b["resolveExportsOrImports()"] b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 -->|calls| c10abc49_1d0c_ffeb_c31f_9afc51ce808b 8ff08c93_2e0c_c3ed_bfd0_267a77f07273["mapWithBrowserField()"] b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 -->|calls| 8ff08c93_2e0c_c3ed_bfd0_267a77f07273 2c262e8e_4e5d_80f3_98ab_102647c58f78["tryFsResolve()"] b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 -->|calls| 2c262e8e_4e5d_80f3_98ab_102647c58f78 style b2e6fca1_a66d_30a7_9a9e_9c6de6c46d25 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/plugins/resolve.ts lines 1042–1109
function resolveDeepImport(
id: string,
{ setResolvedCache, getResolvedCache, dir, data }: PackageData,
options: InternalResolveOptions,
externalize?: boolean,
): string | undefined {
const cache = getResolvedCache(id, options)
if (cache) {
return cache
}
let relativeId: string | undefined | void = id
const { exports: exportsField, browser: browserField } = data
// map relative based on exports data
if (exportsField) {
if (isObject(exportsField) && !Array.isArray(exportsField)) {
// resolve without postfix (see #7098)
const { file, postfix } = splitFileAndPostfix(relativeId)
const exportsId = resolveExportsOrImports(
data,
file,
options,
'exports',
externalize,
)
if (exportsId !== undefined) {
relativeId = exportsId + postfix
} else {
relativeId = undefined
}
} else {
// not exposed
relativeId = undefined
}
if (!relativeId) {
throw new Error(
`Package subpath '${relativeId}' is not defined by "exports" in ` +
`${path.join(dir, 'package.json')}.`,
)
}
} else if (options.mainFields.includes('browser') && isObject(browserField)) {
// resolve without postfix (see #7098)
const { file, postfix } = splitFileAndPostfix(relativeId)
const mapped = mapWithBrowserField(file, browserField)
if (mapped) {
relativeId = mapped + postfix
} else if (mapped === false) {
setResolvedCache(id, browserExternalId, options)
return browserExternalId
}
}
if (relativeId) {
const resolved = tryFsResolve(
path.join(dir, relativeId),
options,
!exportsField, // try index only if no exports field
)
if (resolved) {
debug?.(
`[node/deep-import] ${colors.cyan(id)} -> ${colors.dim(resolved)}`,
)
setResolvedCache(id, resolved, options)
return resolved
}
}
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does resolveDeepImport() do?
resolveDeepImport() is a function in the vite codebase, defined in packages/vite/src/node/plugins/resolve.ts.
Where is resolveDeepImport() defined?
resolveDeepImport() is defined in packages/vite/src/node/plugins/resolve.ts at line 1042.
What does resolveDeepImport() call?
resolveDeepImport() calls 5 function(s): isObject, mapWithBrowserField, resolveExportsOrImports, splitFileAndPostfix, tryFsResolve.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free