diff --git a/packages/vite/src/node/plugins/manifest.ts b/packages/vite/src/node/plugins/manifest.ts index 280bd5edffeded..3c5d93e8867ec2 100644 --- a/packages/vite/src/node/plugins/manifest.ts +++ b/packages/vite/src/node/plugins/manifest.ts @@ -19,6 +19,10 @@ interface ManifestChunk { dynamicImports?: string[] } +function isEmptyChunk(chunk: OutputChunk): boolean { + return !chunk.code || (chunk.code.length <= 1 && !chunk.code.trim()) +} + export function manifestPlugin(config: ResolvedConfig): Plugin { const manifest: Manifest = {} @@ -42,6 +46,15 @@ export function manifestPlugin(config: ResolvedConfig): Plugin { } } + function replaceFileWithAsset(chunk: OutputChunk) { + const name = chunk.facadeModuleId ? getChunkName(chunk) : chunk.name + const asset = Object.values(bundle).find( + (otherChunk) => otherChunk.type === 'asset' && otherChunk.name == name + ) + if (asset) chunk.fileName = asset.fileName + return chunk + } + function createChunk(chunk: OutputChunk): ManifestChunk { const manifestChunk: ManifestChunk = { file: chunk.fileName @@ -83,6 +96,9 @@ export function manifestPlugin(config: ResolvedConfig): Plugin { for (const file in bundle) { const chunk = bundle[file] if (chunk.type === 'chunk') { + if (isEmptyChunk(chunk)) { + replaceFileWithAsset(chunk) + } manifest[getChunkName(chunk)] = createChunk(chunk) } }