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: {} }),
}
}
Domain
Subdomains
Defined In
Called By
Source
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