bundleConfigFile() — vite Function Reference
Architecture documentation for the bundleConfigFile() function in config.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD f7f3ac4c_520c_5890_698f_e1be179267d2["bundleConfigFile()"] 7da774f9_eca5_d54e_6e01_6bee7d460a2b["config.ts"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|defined in| 7da774f9_eca5_d54e_6e01_6bee7d460a2b de2a20c0_a4a2_f7c1_abd6_414c8a78818e["bundleAndLoadConfigFile()"] de2a20c0_a4a2_f7c1_abd6_414c8a78818e -->|calls| f7f3ac4c_520c_5890_698f_e1be179267d2 fb27ca2e_1576_f57b_b1dd_9bac4dddcf04["isNodeBuiltin()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| fb27ca2e_1576_f57b_b1dd_9bac4dddcf04 d6281796_ec48_ef52_d544_234c7478aa0f["isNodeLikeBuiltin()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| d6281796_ec48_ef52_d544_234c7478aa0f 363641b4_de9b_dbe1_f421_1fd46e488386["nodeResolveWithVite()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| 363641b4_de9b_dbe1_f421_1fd46e488386 10f1d8d4_c841_b248_e3e8_0c71d1233d7b["createImportMetaResolver()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| 10f1d8d4_c841_b248_e3e8_0c71d1233d7b dfa2b928_25a4_a78f_1e11_1e7e643cae09["resolve()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| dfa2b928_25a4_a78f_1e11_1e7e643cae09 f12d281f_62d2_ffd6_7014_ec7f984f1130["collectAllModules()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| f12d281f_62d2_ffd6_7014_ec7f984f1130 2a568e89_e3e7_9284_fd00_e1a9ca1ec09a["close()"] f7f3ac4c_520c_5890_698f_e1be179267d2 -->|calls| 2a568e89_e3e7_9284_fd00_e1a9ca1ec09a style f7f3ac4c_520c_5890_698f_e1be179267d2 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/config.ts lines 2351–2514
async function bundleConfigFile(
fileName: string,
isESM: boolean,
): Promise<{ code: string; dependencies: string[] }> {
let importMetaResolverRegistered = false
const root = path.dirname(fileName)
const dirnameVarName = '__vite_injected_original_dirname'
const filenameVarName = '__vite_injected_original_filename'
const importMetaUrlVarName = '__vite_injected_original_import_meta_url'
const importMetaResolveVarName =
'__vite_injected_original_import_meta_resolve'
const importMetaResolveRegex = /import\.meta\s*\.\s*resolve/
const bundle = await rolldown({
input: fileName,
// target: [`node${process.versions.node}`],
platform: 'node',
resolve: {
mainFields: ['main'],
},
transform: {
define: {
__dirname: dirnameVarName,
__filename: filenameVarName,
'import.meta.url': importMetaUrlVarName,
'import.meta.dirname': dirnameVarName,
'import.meta.filename': filenameVarName,
'import.meta.resolve': importMetaResolveVarName,
'import.meta.main': 'false',
},
},
// disable treeshake to include files that is not sideeffectful to `moduleIds`
treeshake: false,
// disable tsconfig as it's confusing to respect tsconfig options in the config file
// this also aligns with other config loader behaviors
tsconfig: false,
plugins: [
{
name: 'externalize-deps',
resolveId: {
filter: { id: /^[^.#].*/ },
async handler(id, importer, { kind }) {
if (!importer || path.isAbsolute(id) || isNodeBuiltin(id)) {
return
}
// With the `isNodeBuiltin` check above, this check captures if the builtin is a
// non-node built-in, which esbuild doesn't know how to handle. In that case, we
// externalize it so the non-node runtime handles it instead.
if (isNodeLikeBuiltin(id) || id.startsWith('npm:')) {
return { id, external: true }
}
const isImport = isESM || kind === 'dynamic-import'
let idFsPath: string | undefined
try {
idFsPath = nodeResolveWithVite(id, importer, {
root,
isRequire: !isImport,
})
} catch (e) {
if (!isImport) {
let canResolveWithImport = false
try {
canResolveWithImport = !!nodeResolveWithVite(id, importer, {
root,
})
} catch {}
if (canResolveWithImport) {
throw new Error(
`Failed to resolve ${JSON.stringify(
id,
)}. This package is ESM only but it was tried to load by \`require\`. See https://vite.dev/guide/troubleshooting.html#this-package-is-esm-only for more details.`,
)
}
}
throw e
}
if (!idFsPath) return
// always no-externalize json files as rolldown does not support import attributes
Domain
Subdomains
Defined In
Calls
Called By
Source
Frequently Asked Questions
What does bundleConfigFile() do?
bundleConfigFile() is a function in the vite codebase, defined in packages/vite/src/node/config.ts.
Where is bundleConfigFile() defined?
bundleConfigFile() is defined in packages/vite/src/node/config.ts at line 2351.
What does bundleConfigFile() call?
bundleConfigFile() calls 7 function(s): close, collectAllModules, createImportMetaResolver, isNodeBuiltin, isNodeLikeBuiltin, nodeResolveWithVite, resolve.
What calls bundleConfigFile()?
bundleConfigFile() is called by 1 function(s): bundleAndLoadConfigFile.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free