extractExportsData() — vite Function Reference
Architecture documentation for the extractExportsData() function in index.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD 60451d3e_8c58_53f5_26c6_c17035d9a884["extractExportsData()"] 2f328851_91ee_fb05_63f0_4f466b9d6250["index.ts"] 60451d3e_8c58_53f5_26c6_c17035d9a884 -->|defined in| 2f328851_91ee_fb05_63f0_4f466b9d6250 9b7b17a5_d5ad_52e2_bb45_a7dd0edefa69["toDiscoveredDependencies()"] 9b7b17a5_d5ad_52e2_bb45_a7dd0edefa69 -->|calls| 60451d3e_8c58_53f5_26c6_c17035d9a884 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf["prepareRolldownOptimizerRun()"] 27cb44a2_ca79_d2a4_e536_a5e4bc22ffbf -->|calls| 60451d3e_8c58_53f5_26c6_c17035d9a884 d7d28d2f_0a7a_bed9_0e0f_6db71b4e1368["optimizedDepNeedsInterop()"] d7d28d2f_0a7a_bed9_0e0f_6db71b4e1368 -->|calls| 60451d3e_8c58_53f5_26c6_c17035d9a884 d40c38f0_b6c1_b93f_a735_b3f1e17bea5b["createDepsOptimizer()"] d40c38f0_b6c1_b93f_a735_b3f1e17bea5b -->|calls| 60451d3e_8c58_53f5_26c6_c17035d9a884 40f91c1f_e515_2c03_9628_3e4ba2691b70["asyncFlatten()"] 60451d3e_8c58_53f5_26c6_c17035d9a884 -->|calls| 40f91c1f_e515_2c03_9628_3e4ba2691b70 19ce2051_6a74_4b8b_104d_ec006cd7075f["arraify()"] 60451d3e_8c58_53f5_26c6_c17035d9a884 -->|calls| 19ce2051_6a74_4b8b_104d_ec006cd7075f 047aa0d5_25bc_9eb0_8c41_99a2be202642["transformWithOxc()"] 60451d3e_8c58_53f5_26c6_c17035d9a884 -->|calls| 047aa0d5_25bc_9eb0_8c41_99a2be202642 style 60451d3e_8c58_53f5_26c6_c17035d9a884 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/optimizer/index.ts lines 1092–1170
export async function extractExportsData(
environment: Environment,
filePath: string,
): Promise<ExportsData> {
await init
const { optimizeDeps } = environment.config
const rolldownOptions = optimizeDeps.rolldownOptions ?? {}
if (optimizeDeps.extensions?.some((ext) => filePath.endsWith(ext))) {
// For custom supported extensions, build the entry file to transform it into JS,
// and then parse with es-module-lexer. Note that the `bundle` option is not `true`,
// so only the entry file is being transformed.
const { plugins: pluginsFromConfig = [], ...remainingRolldownOptions } =
rolldownOptions
const plugins = await asyncFlatten(arraify(pluginsFromConfig))
plugins.unshift({
name: 'externalize',
resolveId(id, importer) {
if (importer !== undefined) {
return { id, external: true }
}
},
})
const build = await rolldown({
...remainingRolldownOptions,
plugins,
input: [filePath],
// TODO: remove this and enable rolldown's CSS support later
moduleTypes: {
'.css': 'js',
...remainingRolldownOptions.moduleTypes,
},
})
const result = await build.generate({
...rolldownOptions.output,
format: 'esm',
sourcemap: false,
})
const [, exports, , hasModuleSyntax] = parse(result.output[0].code)
return {
hasModuleSyntax,
exports: exports.map((e) => e.n),
}
}
let parseResult: ReturnType<typeof parse>
let usedJsxLoader = false
const entryContent = fs.readFileSync(filePath, 'utf-8')
try {
parseResult = parse(entryContent)
} catch {
const lang = rolldownOptions.moduleTypes?.[path.extname(filePath)] || 'jsx'
debug?.(
`Unable to parse: ${filePath}.\n Trying again with a ${lang} transform.`,
)
if (lang !== 'jsx' && lang !== 'tsx' && lang !== 'ts') {
throw new Error(`Unable to parse : ${filePath}.`)
}
const transformed = await transformWithOxc(
entryContent,
filePath,
{ lang },
undefined,
environment.config,
)
parseResult = parse(transformed.code)
usedJsxLoader = true
}
const [, exports, , hasModuleSyntax] = parseResult
const exportsData: ExportsData = {
hasModuleSyntax,
exports: exports.map((e) => e.n),
jsxLoader: usedJsxLoader,
}
return exportsData
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does extractExportsData() do?
extractExportsData() is a function in the vite codebase, defined in packages/vite/src/node/optimizer/index.ts.
Where is extractExportsData() defined?
extractExportsData() is defined in packages/vite/src/node/optimizer/index.ts at line 1092.
What does extractExportsData() call?
extractExportsData() calls 3 function(s): arraify, asyncFlatten, transformWithOxc.
What calls extractExportsData()?
extractExportsData() is called by 4 function(s): createDepsOptimizer, optimizedDepNeedsInterop, prepareRolldownOptimizerRun, toDiscoveredDependencies.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free