resolvePackageEntry() — vite Function Reference
Architecture documentation for the resolvePackageEntry() function in resolve.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD ff420344_db87_ddaa_de80_eb7cf9a4644d["resolvePackageEntry()"] dcff87b0_a8ea_57a2_3b29_a7b8f19986f3["resolve.ts"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|defined in| dcff87b0_a8ea_57a2_3b29_a7b8f19986f3 8ac17738_0641_9534_aa4e_c559f410561a["tryCleanFsResolve()"] 8ac17738_0641_9534_aa4e_c559f410561a -->|calls| ff420344_db87_ddaa_de80_eb7cf9a4644d 09d0a948_4a89_8bbc_50ce_129fc70dbd66["splitFileAndPostfix()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| 09d0a948_4a89_8bbc_50ce_129fc70dbd66 c10abc49_1d0c_ffeb_c31f_9afc51ce808b["resolveExportsOrImports()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| c10abc49_1d0c_ffeb_c31f_9afc51ce808b 5a1e6eac_e85e_4779_6f3b_704e48e41b29["tryResolveBrowserEntry()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| 5a1e6eac_e85e_4779_6f3b_704e48e41b29 2aff86e8_0c9d_22cb_6536_c1321e1aaa1d["isObject()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| 2aff86e8_0c9d_22cb_6536_c1321e1aaa1d 8ff08c93_2e0c_c3ed_bfd0_267a77f07273["mapWithBrowserField()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| 8ff08c93_2e0c_c3ed_bfd0_267a77f07273 2c262e8e_4e5d_80f3_98ab_102647c58f78["tryFsResolve()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| 2c262e8e_4e5d_80f3_98ab_102647c58f78 1c84a9a4_b284_fb0b_6d25_6df01e35e426["packageEntryFailure()"] ff420344_db87_ddaa_de80_eb7cf9a4644d -->|calls| 1c84a9a4_b284_fb0b_6d25_6df01e35e426 style ff420344_db87_ddaa_de80_eb7cf9a4644d fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/plugins/resolve.ts lines 903–991
export function resolvePackageEntry(
id: string,
{ dir, data, setResolvedCache, getResolvedCache }: PackageData,
options: InternalResolveOptions,
externalize?: boolean,
): string | undefined {
const { file: idWithoutPostfix, postfix } = splitFileAndPostfix(id)
const cached = getResolvedCache('.', options)
if (cached) {
return cached + postfix
}
try {
let entryPoint: string | undefined
// resolve exports field with highest priority
// using https://github.com/lukeed/resolve.exports
if (data.exports) {
entryPoint = resolveExportsOrImports(
data,
'.',
options,
'exports',
externalize,
)
}
// fallback to mainFields if still not resolved
if (!entryPoint) {
for (const field of options.mainFields) {
if (field === 'browser') {
entryPoint = tryResolveBrowserEntry(dir, data, options)
if (entryPoint) {
break
}
} else if (typeof data[field] === 'string') {
entryPoint = data[field]
break
}
}
}
entryPoint ||= data.main
// try default entry when entry is not define
// https://nodejs.org/api/modules.html#all-together
const entryPoints = entryPoint
? [entryPoint]
: ['index.js', 'index.json', 'index.node']
for (let entry of entryPoints) {
// make sure we don't get scripts when looking for sass
let skipPackageJson = false
if (
options.mainFields[0] === 'sass' &&
!options.extensions.includes(path.extname(entry))
) {
entry = ''
skipPackageJson = true
} else {
// resolve object browser field in package.json
const { browser: browserField } = data
if (options.mainFields.includes('browser') && isObject(browserField)) {
entry = mapWithBrowserField(entry, browserField) || entry
}
}
const entryPointPath = path.join(dir, entry)
const resolvedEntryPoint = tryFsResolve(
entryPointPath,
options,
true,
skipPackageJson,
)
if (resolvedEntryPoint) {
debug?.(
`[package entry] ${colors.cyan(idWithoutPostfix)} -> ${colors.dim(
resolvedEntryPoint,
)}${postfix !== '' ? ` (postfix: ${postfix})` : ''}`,
)
setResolvedCache('.', resolvedEntryPoint, options)
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does resolvePackageEntry() do?
resolvePackageEntry() is a function in the vite codebase, defined in packages/vite/src/node/plugins/resolve.ts.
Where is resolvePackageEntry() defined?
resolvePackageEntry() is defined in packages/vite/src/node/plugins/resolve.ts at line 903.
What does resolvePackageEntry() call?
resolvePackageEntry() calls 7 function(s): isObject, mapWithBrowserField, packageEntryFailure, resolveExportsOrImports, splitFileAndPostfix, tryFsResolve, tryResolveBrowserEntry.
What calls resolvePackageEntry()?
resolvePackageEntry() is called by 1 function(s): tryCleanFsResolve.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free