createDepsOptimizer() — vite Function Reference
Architecture documentation for the createDepsOptimizer() function in optimizer.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD d40c38f0_b6c1_b93f_a735_b3f1e17bea5b["createDepsOptimizer()"] 1e9c451c_672c_39cf_7b97_f46e41e7b47d["optimizer.ts"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|defined in| 1e9c451c_672c_39cf_7b97_f46e41e7b47d 54f1d371_b3ac_a02d_d56e_00234dedc459["initDepsOptimizerMetadata()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 54f1d371_b3ac_a02d_d56e_00234dedc459 0292cdda_4b03_d38d_11d6_b4b287d5f619["createIsOptimizedDepFile()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 0292cdda_4b03_d38d_11d6_b4b287d5f619 287d6c40_e13a_3c71_8d45_c949a2448ad8["createIsOptimizedDepUrl()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 287d6c40_e13a_3c71_8d45_c949a2448ad8 2622794a_5478_b8b2_f904_da8e5ad26abf["depsLogString()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 2622794a_5478_b8b2_f904_da8e5ad26abf 2a568e89_e3e7_9284_fd00_e1a9ca1ec09a["close()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 2a568e89_e3e7_9284_fd00_e1a9ca1ec09a 8f966b1b_ebbe_17e4_e14f_b8888709480c["loadCachedDepOptimizationMetadata()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 8f966b1b_ebbe_17e4_e14f_b8888709480c 1c26b345_9001_5539_856a_e1c755036eaa["addManuallyIncludedOptimizeDeps()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 1c26b345_9001_5539_856a_e1c755036eaa 9b7b17a5_d5ad_52e2_bb45_a7dd0edefa69["toDiscoveredDependencies()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 9b7b17a5_d5ad_52e2_bb45_a7dd0edefa69 7402f434_a1bf_d32f_d9fd_fd11f7538168["addOptimizedDepInfo()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 7402f434_a1bf_d32f_d9fd_fd11f7538168 b6ef989d_5a20_eb85_097b_a92459d6c1e0["waitForRequestsIdle()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| b6ef989d_5a20_eb85_097b_a92459d6c1e0 1864cf91_94f2_c4d1_81e0_d6a82d65cb0e["Promise()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 1864cf91_94f2_c4d1_81e0_d6a82d65cb0e fca4ce05_45e4_28a5_7b84_fc3f5cbc24bb["discoverProjectDependencies()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| fca4ce05_45e4_28a5_7b84_fc3f5cbc24bb f6cc5896_6a10_2069_d844_d1c6914e9d05["devToScanEnvironment()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| f6cc5896_6a10_2069_d844_d1c6914e9d05 style d40c38f0_b6c1_b93f_a735_b3f1e17bea5b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/optimizer/optimizer.ts lines 40–746
export function createDepsOptimizer(
environment: DevEnvironment,
): DepsOptimizer {
const { logger } = environment
const sessionTimestamp = Date.now().toString()
let debounceProcessingHandle: NodeJS.Timeout | undefined
let closed = false
const options = environment.config.optimizeDeps
const { noDiscovery, holdUntilCrawlEnd } = options
let metadata: DepOptimizationMetadata = initDepsOptimizerMetadata(
environment,
sessionTimestamp,
)
const depsOptimizer: DepsOptimizer = {
init,
metadata,
registerMissingImport,
run: () => debouncedProcessing(0),
isOptimizedDepFile: createIsOptimizedDepFile(environment),
isOptimizedDepUrl: createIsOptimizedDepUrl(environment),
getOptimizedDepId: (depInfo: OptimizedDepInfo) =>
`${depInfo.file}?v=${depInfo.browserHash}`,
close,
options,
}
let newDepsDiscovered = false
let newDepsToLog: string[] = []
let newDepsToLogHandle: NodeJS.Timeout | undefined
const logNewlyDiscoveredDeps = () => {
if (newDepsToLog.length) {
logger.info(
colors.green(
`✨ new dependencies optimized: ${depsLogString(newDepsToLog)}`,
),
{
timestamp: true,
},
)
newDepsToLog = []
}
}
let discoveredDepsWhileScanning: string[] = []
const logDiscoveredDepsWhileScanning = () => {
if (discoveredDepsWhileScanning.length) {
logger.info(
colors.green(
`✨ discovered while scanning: ${depsLogString(
discoveredDepsWhileScanning,
)}`,
),
{
timestamp: true,
},
)
discoveredDepsWhileScanning = []
}
}
let depOptimizationProcessing = promiseWithResolvers<void>()
let depOptimizationProcessingQueue: PromiseWithResolvers<void>[] = []
const resolveEnqueuedProcessingPromises = () => {
// Resolve all the processings (including the ones which were delayed)
for (const processing of depOptimizationProcessingQueue) {
processing.resolve()
}
depOptimizationProcessingQueue = []
}
let enqueuedRerun: (() => void) | undefined
let currentlyProcessing = false
let firstRunCalled = false
Domain
Subdomains
Calls
- Promise()
- addManuallyIncludedOptimizeDeps()
- addOptimizedDepInfo()
- close()
- createIsOptimizedDepFile()
- createIsOptimizedDepUrl()
- depsFromOptimizedDepInfo()
- depsLogString()
- devToScanEnvironment()
- discoverProjectDependencies()
- extractExportsData()
- findInteropMismatches()
- getHash()
- getOptimizedDepPath()
- init()
- initDepsOptimizerMetadata()
- loadCachedDepOptimizationMetadata()
- promiseWithResolvers()
- runOptimizeDeps()
- toDiscoveredDependencies()
- waitForRequestsIdle()
Source
Frequently Asked Questions
What does createDepsOptimizer() do?
createDepsOptimizer() is a function in the vite codebase, defined in packages/vite/src/node/optimizer/optimizer.ts.
Where is createDepsOptimizer() defined?
createDepsOptimizer() is defined in packages/vite/src/node/optimizer/optimizer.ts at line 40.
What does createDepsOptimizer() call?
createDepsOptimizer() calls 21 function(s): Promise, addManuallyIncludedOptimizeDeps, addOptimizedDepInfo, close, createIsOptimizedDepFile, createIsOptimizedDepUrl, depsFromOptimizedDepInfo, depsLogString, and 13 more.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free