manifestPlugin() — vite Function Reference
Architecture documentation for the manifestPlugin() function in manifest.ts from the vite codebase.
Entity Profile
Dependency Diagram
graph TD b888666d_ce54_f0bf_184f_48d09f6a9ee8["manifestPlugin()"] 7dd0ce14_b7e1_7049_f318_2603b5403c04["manifest.ts"] b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|defined in| 7dd0ce14_b7e1_7049_f318_2603b5403c04 8c4db194_5dfd_4391_cc9a_833655009196["resolveBuildPlugins()"] 8c4db194_5dfd_4391_cc9a_833655009196 -->|calls| b888666d_ce54_f0bf_184f_48d09f6a9ee8 16a00926_f0e9_60f1_3006_9132a6d78745["perEnvironmentState()"] b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| 16a00926_f0e9_60f1_3006_9132a6d78745 dfa3f5a8_b519_cb65_4b7e_9d4824406fd4["perEnvironmentPlugin()"] b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| dfa3f5a8_b519_cb65_4b7e_9d4824406fd4 22dced1f_3d60_0600_3ed0_f47f540d1305["getChunkOriginalFileName()"] b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| 22dced1f_3d60_0600_3ed0_f47f540d1305 b8325ee3_313b_4bc2_ecfd_3e3b5441a5f3["sortObjectKeys()"] b888666d_ce54_f0bf_184f_48d09f6a9ee8 -->|calls| b8325ee3_313b_4bc2_ecfd_3e3b5441a5f3 style b888666d_ce54_f0bf_184f_48d09f6a9ee8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/vite/src/node/plugins/manifest.ts lines 60–334
export function manifestPlugin(config: ResolvedConfig): Plugin {
const getState = perEnvironmentState(() => {
return {
manifest: {} as Manifest,
outputCount: 0,
reset() {
this.manifest = {}
this.outputCount = 0
},
}
})
if (config.build.manifest && config.nativePluginEnabledLevel >= 1) {
return perEnvironmentPlugin('native:manifest', (environment) => {
if (!environment.config.build.manifest) return false
const root = environment.config.root
const outPath =
environment.config.build.manifest === true
? '.vite/manifest.json'
: environment.config.build.manifest
const envs: Record<string, Environment> = {}
function getChunkName(chunk: OutputChunk) {
return (
getChunkOriginalFileName(chunk, root, false) ??
`_${path.basename(chunk.fileName)}`
)
}
return [
{
name: 'native:manifest-envs',
buildStart() {
envs[environment.name] = this.environment
},
},
nativeManifestPlugin({
root,
outPath,
isOutputOptionsForLegacyChunks:
environment.config.isOutputOptionsForLegacyChunks,
cssEntries() {
return Object.fromEntries(
cssEntriesMap.get(envs[environment.name])!.entries(),
)
},
}),
{
name: 'native:manifest-compatible',
generateBundle(_, bundle) {
const asset = bundle[outPath]
if (asset.type === 'asset') {
let manifest: Manifest | undefined
for (const output of Object.values(bundle)) {
const importedCss = output.viteMetadata?.importedCss
const importedAssets = output.viteMetadata?.importedAssets
if (!importedCss?.size && !importedAssets?.size) continue
manifest ??= JSON.parse(asset.source.toString()) as Manifest
if (output.type === 'chunk') {
const item = manifest[getChunkName(output)]
if (!item) continue
if (importedCss?.size) {
item.css = [...importedCss]
}
if (importedAssets?.size) {
item.assets = [...importedAssets]
}
} else if (output.type === 'asset' && output.names.length > 0) {
// Add every unique asset to the manifest, keyed by its original name
const keys =
output.originalFileNames.length > 0
? output.originalFileNames
: [`_${path.basename(output.fileName)}`]
for (const key of keys) {
const item = manifest[key]
if (!item) continue
if (!(item.file && endsWithJSRE.test(item.file))) {
if (importedCss?.size) {
item.css = [...importedCss]
}
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does manifestPlugin() do?
manifestPlugin() is a function in the vite codebase, defined in packages/vite/src/node/plugins/manifest.ts.
Where is manifestPlugin() defined?
manifestPlugin() is defined in packages/vite/src/node/plugins/manifest.ts at line 60.
What does manifestPlugin() call?
manifestPlugin() calls 4 function(s): getChunkOriginalFileName, perEnvironmentPlugin, perEnvironmentState, sortObjectKeys.
What calls manifestPlugin()?
manifestPlugin() is called by 1 function(s): resolveBuildPlugins.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free