loadPackageData() — vite Function Reference
Architecture documentation for the loadPackageData() function in packages.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD c2d70c8c_c901_2d4f_df10_d0fa8607751f["loadPackageData()"] dff9cadb_1e8c_7fc9_4119_a173f1f21cbd["packages.ts"] c2d70c8c_c901_2d4f_df10_d0fa8607751f -->|defined in| dff9cadb_1e8c_7fc9_4119_a173f1f21cbd 170ceb82_4bf1_2290_1f2e_bbdec11e5184["resolvePackageData()"] 170ceb82_4bf1_2290_1f2e_bbdec11e5184 -->|calls| c2d70c8c_c901_2d4f_df10_d0fa8607751f 31b651d6_9d57_14b0_2e8c_d85642bc19f4["findNearestPackageData()"] 31b651d6_9d57_14b0_2e8c_d85642bc19f4 -->|calls| c2d70c8c_c901_2d4f_df10_d0fa8607751f 8ac17738_0641_9534_aa4e_c559f410561a["tryCleanFsResolve()"] 8ac17738_0641_9534_aa4e_c559f410561a -->|calls| c2d70c8c_c901_2d4f_df10_d0fa8607751f cd901a4b_1290_4e3f_0c59_f8621634cb5a["stripBomTag()"] c2d70c8c_c901_2d4f_df10_d0fa8607751f -->|calls| cd901a4b_1290_4e3f_0c59_f8621634cb5a a4adb1a7_cf54_091f_eb63_8217e684a8e1["normalizePath()"] c2d70c8c_c901_2d4f_df10_d0fa8607751f -->|calls| a4adb1a7_cf54_091f_eb63_8217e684a8e1 1e02427e_675c_c480_4a02_3c802c2e6152["getResolveCacheKey()"] c2d70c8c_c901_2d4f_df10_d0fa8607751f -->|calls| 1e02427e_675c_c480_4a02_3c802c2e6152 style c2d70c8c_c901_2d4f_df10_d0fa8607751f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/packages.ts lines 178–225
export function loadPackageData(pkgPath: string): PackageData {
const data = JSON.parse(stripBomTag(fs.readFileSync(pkgPath, 'utf-8')))
const pkgDir = normalizePath(path.dirname(pkgPath))
const { sideEffects } = data
let hasSideEffects: (id: string) => boolean | null
if (typeof sideEffects === 'boolean') {
hasSideEffects = () => sideEffects
} else if (Array.isArray(sideEffects)) {
if (sideEffects.length <= 0) {
// createFilter always returns true if `includes` is an empty array
// but here we want it to always return false
hasSideEffects = () => false
} else {
const finalPackageSideEffects = sideEffects.map((sideEffect) => {
/*
* The array accepts simple glob patterns to the relevant files... Patterns like *.css, which do not include a /, will be treated like **\/*.css.
* https://webpack.js.org/guides/tree-shaking/
* https://github.com/vitejs/vite/pull/11807
*/
if (sideEffect.includes('/')) {
return sideEffect
}
return `**/${sideEffect}`
})
hasSideEffects = createFilter(finalPackageSideEffects, null, {
resolve: pkgDir,
})
}
} else {
hasSideEffects = () => null
}
const resolvedCache: Record<string, string | undefined> = {}
const pkg: PackageData = {
dir: pkgDir,
data,
hasSideEffects,
setResolvedCache(key, entry, options) {
resolvedCache[getResolveCacheKey(key, options)] = entry
},
getResolvedCache(key, options) {
return resolvedCache[getResolveCacheKey(key, options)]
},
}
return pkg
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does loadPackageData() do?
loadPackageData() is a function in the vite codebase, defined in packages/vite/src/node/packages.ts.
Where is loadPackageData() defined?
loadPackageData() is defined in packages/vite/src/node/packages.ts at line 178.
What does loadPackageData() call?
loadPackageData() calls 3 function(s): getResolveCacheKey, normalizePath, stripBomTag.
What calls loadPackageData()?
loadPackageData() is called by 3 function(s): findNearestPackageData, resolvePackageData, tryCleanFsResolve.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free