@@ -9,7 +9,6 @@ import type { ResolvedConfig } from '..'
9
9
import type { Plugin } from '../plugin'
10
10
import { normalizePath , sortObjectKeys } from '../utils'
11
11
import { generatedAssets } from './asset'
12
- import type { GeneratedAssetMeta } from './asset'
13
12
14
13
const endsWithJSRE = / \. [ c m ] ? j s $ /
15
14
@@ -111,18 +110,20 @@ export function manifestPlugin(config: ResolvedConfig): Plugin {
111
110
return manifestChunk
112
111
}
113
112
114
- const fileNameToAssetMeta = new Map < string , GeneratedAssetMeta > ( )
115
113
const assets = generatedAssets . get ( config ) !
116
- assets . forEach ( ( asset , referenceId ) => {
117
- try {
118
- const fileName = this . getFileName ( referenceId )
119
- fileNameToAssetMeta . set ( fileName , asset )
120
- } catch ( error : unknown ) {
121
- // The asset was generated as part of a different output option.
122
- // It was already handled during the previous run of this plugin.
123
- assets . delete ( referenceId )
114
+ const entryCssAssetFileNames = new Set ( )
115
+ for ( const [ id , asset ] of assets . entries ( ) ) {
116
+ if ( asset . isEntry ) {
117
+ try {
118
+ const fileName = this . getFileName ( id )
119
+ entryCssAssetFileNames . add ( fileName )
120
+ } catch ( error : unknown ) {
121
+ // The asset was generated as part of a different output option.
122
+ // It was already handled during the previous run of this plugin.
123
+ assets . delete ( id )
124
+ }
124
125
}
125
- } )
126
+ }
126
127
127
128
const fileNameToAsset = new Map < string , ManifestChunk > ( )
128
129
@@ -132,9 +133,9 @@ export function manifestPlugin(config: ResolvedConfig): Plugin {
132
133
manifest [ getChunkName ( chunk ) ] = createChunk ( chunk )
133
134
} else if ( chunk . type === 'asset' && typeof chunk . name === 'string' ) {
134
135
// Add every unique asset to the manifest, keyed by its original name
135
- const assetMeta = fileNameToAssetMeta . get ( chunk . fileName )
136
- const src = assetMeta ?. originalName ?? chunk . name
137
- const asset = createAsset ( chunk , src , assetMeta ?. isEntry )
136
+ const src = chunk . originalFileName ?? chunk . name
137
+ const isEntry = entryCssAssetFileNames . has ( chunk . fileName )
138
+ const asset = createAsset ( chunk , src , isEntry )
138
139
139
140
// If JS chunk and asset chunk are both generated from the same source file,
140
141
// prioritize JS chunk as it contains more information
@@ -147,15 +148,15 @@ export function manifestPlugin(config: ResolvedConfig): Plugin {
147
148
}
148
149
149
150
// Add deduplicated assets to the manifest
150
- assets . forEach ( ( { originalName } , referenceId ) => {
151
- if ( ! manifest [ originalName ] ) {
151
+ for ( const [ referenceId , { originalFileName } ] of assets . entries ( ) ) {
152
+ if ( ! manifest [ originalFileName ] ) {
152
153
const fileName = this . getFileName ( referenceId )
153
154
const asset = fileNameToAsset . get ( fileName )
154
155
if ( asset ) {
155
- manifest [ originalName ] = asset
156
+ manifest [ originalFileName ] = asset
156
157
}
157
158
}
158
- } )
159
+ }
159
160
160
161
outputCount ++
161
162
const output = config . build . rollupOptions ?. output
0 commit comments