Home / Function/ loadPackageData() — vite Function Reference

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

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