prepareRolldownOptimizerRun() — vite Function Reference
Architecture documentation for the prepareRolldownOptimizerRun() function in index.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf["prepareRolldownOptimizerRun()"] 2f328851_91ee_fb05_63f0_4f466b9d6250["index.ts"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|defined in| 2f328851_91ee_fb05_63f0_4f466b9d6250 b53437fa_d2e4_a560_0d14_dfc84f740176["runOptimizeDeps()"] b53437fa_d2e4_a560_0d14_dfc84f740176 -->|calls| 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf 60451d3e_8c58_53f5_26c6_c17035d9a884["extractExportsData()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| 60451d3e_8c58_53f5_26c6_c17035d9a884 1cc52ea9_1097_389c_806c_c1207629afcc["flattenId()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| 1cc52ea9_1097_389c_806c_c1207629afcc 40f91c1f_e515_2c03_9628_3e4ba2691b70["asyncFlatten()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| 40f91c1f_e515_2c03_9628_3e4ba2691b70 19ce2051_6a74_4b8b_104d_ec006cd7075f["arraify()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| 19ce2051_6a74_4b8b_104d_ec006cd7075f ac03445a_81e1_acd2_c81d_996b0b9b2a16["rolldownCjsExternalPlugin()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| ac03445a_81e1_acd2_c81d_996b0b9b2a16 9d9d1d96_da01_acb8_5086_7a043722cf91["rolldownDepPlugin()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| 9d9d1d96_da01_acb8_5086_7a043722cf91 style 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/optimizer/index.ts lines 751–865
async function prepareRolldownOptimizerRun(
environment: Environment,
depsInfo: Record<string, OptimizedDepInfo>,
processingCacheDir: string,
optimizerContext: { cancelled: boolean },
): Promise<{
context?: { build: () => Promise<RolldownOutput>; cancel: () => void }
idToExports: Record<string, ExportsData>
}> {
// esbuild generates nested directory output with lowest common ancestor base
// this is unpredictable and makes it difficult to analyze entry / output
// mapping. So what we do here is:
// 1. flatten all ids to eliminate slash
// 2. in the plugin, read the entry ourselves as virtual files to retain the
// path.
const flatIdDeps: Record<string, string> = {}
const idToExports: Record<string, ExportsData> = {}
const { optimizeDeps } = environment.config
const { plugins: pluginsFromConfig = [], ...rolldownOptions } =
optimizeDeps.rolldownOptions ?? {}
let jsxLoader = false
await Promise.all(
Object.keys(depsInfo).map(async (id) => {
const src = depsInfo[id].src!
const exportsData = await (depsInfo[id].exportsData ??
extractExportsData(environment, src))
if (exportsData.jsxLoader) {
// Ensure that optimization won't fail by defaulting '.js' to the JSX parser.
// This is useful for packages such as Gatsby.
jsxLoader = true
}
const flatId = flattenId(id)
flatIdDeps[flatId] = src
idToExports[id] = exportsData
}),
)
if (optimizerContext.cancelled) return { context: undefined, idToExports }
const define = {
'process.env.NODE_ENV': environment.config.keepProcessEnv
? // define process.env.NODE_ENV even for keepProcessEnv === true
// as esbuild will replace it automatically when `platform` is `'browser'`
'process.env.NODE_ENV'
: JSON.stringify(process.env.NODE_ENV || environment.config.mode),
...rolldownOptions.transform?.define,
}
const platform =
optimizeDeps.rolldownOptions?.platform ??
// We generally don't want to use platform 'neutral', as esbuild has custom handling
// when the platform is 'node' or 'browser' that can't be emulated by using mainFields
// and conditions
(environment.config.consumer === 'client' ||
environment.config.ssr.target === 'webworker'
? 'browser'
: 'node')
const external = [...(optimizeDeps.exclude ?? [])]
const plugins = await asyncFlatten(arraify(pluginsFromConfig))
if (external.length) {
plugins.push(rolldownCjsExternalPlugin(external, platform))
}
plugins.push(...rolldownDepPlugin(environment, flatIdDeps, external))
let canceled = false
async function build() {
const bundle = await rolldown({
...rolldownOptions,
input: flatIdDeps,
logLevel: 'silent',
plugins,
platform,
transform: {
...rolldownOptions.transform,
target: ESBUILD_BASELINE_WIDELY_AVAILABLE_TARGET,
define,
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does prepareRolldownOptimizerRun() do?
prepareRolldownOptimizerRun() is a function in the vite codebase, defined in packages/vite/src/node/optimizer/index.ts.
Where is prepareRolldownOptimizerRun() defined?
prepareRolldownOptimizerRun() is defined in packages/vite/src/node/optimizer/index.ts at line 751.
What does prepareRolldownOptimizerRun() call?
prepareRolldownOptimizerRun() calls 6 function(s): arraify, asyncFlatten, extractExportsData, flattenId, rolldownCjsExternalPlugin, rolldownDepPlugin.
What calls prepareRolldownOptimizerRun()?
prepareRolldownOptimizerRun() is called by 1 function(s): runOptimizeDeps.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free