Home / Function/ scanImports() — vite Function Reference

scanImports() — vite Function Reference

Architecture documentation for the scanImports() function in scan.ts from the vite codebase.

Entity Profile

Dependency Diagram

graph TD
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76["scanImports()"]
  6c7a7f5e_5d30_3576_49bf_9041362fd3fd["scan.ts"]
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76 -->|defined in| 6c7a7f5e_5d30_3576_49bf_9041362fd3fd
  fca4ce05_45e4_28a5_7b84_fc3f5cbc24bb["discoverProjectDependencies()"]
  fca4ce05_45e4_28a5_7b84_fc3f5cbc24bb -->|calls| ca966b07_32a3_9d37_9eca_d2ebd25f7f76
  6e6d9ef8_8985_1977_b0ea_4f37e4502554["computeEntries()"]
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76 -->|calls| 6e6d9ef8_8985_1977_b0ea_4f37e4502554
  24024bc8_5434_bc2f_7acb_d02914457eae["prepareRolldownScanner()"]
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76 -->|calls| 24024bc8_5434_bc2f_7acb_d02914457eae
  c4c3bea8_b929_de14_73f3_d09f40360fc0["orderedDependencies()"]
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76 -->|calls| c4c3bea8_b929_de14_73f3_d09f40360fc0
  3cf1d94a_16a2_96d6_7d1d_9757e22a2557["warn()"]
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76 -->|calls| 3cf1d94a_16a2_96d6_7d1d_9757e22a2557
  c7b55e0f_bb87_ef0b_4055_c263cfb95e73["debug()"]
  ca966b07_32a3_9d37_9eca_d2ebd25f7f76 -->|calls| c7b55e0f_bb87_ef0b_4055_c263cfb95e73
  style ca966b07_32a3_9d37_9eca_d2ebd25f7f76 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/vite/src/node/optimizer/scan.ts lines 111–191

export function scanImports(environment: ScanEnvironment): {
  cancel: () => Promise<void>
  result: Promise<{
    deps: Record<string, string>
    missing: Record<string, string>
  }>
} {
  const start = performance.now()
  const { config } = environment

  const scanContext = { cancelled: false }
  async function cancel() {
    scanContext.cancelled = true
  }

  async function scan() {
    const entries = await computeEntries(environment)
    if (!entries.length) {
      if (!config.optimizeDeps.entries && !config.optimizeDeps.include) {
        environment.logger.warn(
          colors.yellow(
            '(!) Could not auto-determine entry point from rollupOptions or html files ' +
              'and there are no explicit optimizeDeps.include patterns. ' +
              'Skipping dependency pre-bundling.',
          ),
        )
      }
      return
    }
    if (scanContext.cancelled) return

    debug?.(
      `Crawling dependencies using entries: ${entries
        .map((entry) => `\n  ${colors.dim(entry)}`)
        .join('')}`,
    )
    const deps: Record<string, string> = {}
    const missing: Record<string, string> = {}

    const context = await prepareRolldownScanner(
      environment,
      entries,
      deps,
      missing,
    )
    if (scanContext.cancelled) return

    try {
      await context.build()
      return {
        // Ensure a fixed order so hashes are stable and improve logs
        deps: orderedDependencies(deps),
        missing,
      }
    } catch (e) {
      const prependMessage = colors.red(`\
  Failed to scan for dependencies from entries:
  ${entries.join('\n')}

  `)
      e.message = prependMessage + e.message
      throw e
    } finally {
      if (debug) {
        const duration = (performance.now() - start).toFixed(2)
        const depsStr =
          Object.keys(orderedDependencies(deps))
            .sort()
            .map((id) => `\n  ${colors.cyan(id)} -> ${colors.dim(deps[id])}`)
            .join('') || colors.dim('no dependencies found')
        debug(`Scan completed in ${duration}ms: ${depsStr}`)
      }
    }
  }
  const result = scan()

  return {
    cancel,
    result: result.then((res) => res ?? { deps: {}, missing: {} }),
  }
}

Subdomains

Frequently Asked Questions

What does scanImports() do?
scanImports() is a function in the vite codebase, defined in packages/vite/src/node/optimizer/scan.ts.
Where is scanImports() defined?
scanImports() is defined in packages/vite/src/node/optimizer/scan.ts at line 111.
What does scanImports() call?
scanImports() calls 5 function(s): computeEntries, debug, orderedDependencies, prepareRolldownScanner, warn.
What calls scanImports()?
scanImports() is called by 1 function(s): discoverProjectDependencies.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free