Skip to content

Commit 89b1191

Browse files
committed
Revert "chore: partial revert "refactor: use originalFileNames/names (vitejs#18240)""
This reverts commit aec2b6e.
1 parent c8677df commit 89b1191

File tree

5 files changed

+41
-49
lines changed

5 files changed

+41
-49
lines changed

packages/vite/src/node/plugins/asset.ts

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,8 @@ const svgExtRE = /\.svg(?:$|\?)/
4242

4343
const assetCache = new WeakMap<Environment, Map<string, string>>()
4444

45-
// chunk.name is the basename for the asset ignoring the directory structure
46-
// For the manifest, we need to preserve the original file path and isEntry
47-
// for CSS assets. We keep a map from referenceId to this information.
48-
export interface GeneratedAssetMeta {
49-
originalFileName: string | undefined
50-
isEntry?: boolean
51-
}
52-
export const generatedAssetsMap = new WeakMap<
53-
Environment,
54-
Map<string, GeneratedAssetMeta>
55-
>()
45+
/** a set of referenceId for entry CSS assets for each environment */
46+
export const cssEntriesMap = new WeakMap<Environment, Set<string>>()
5647

5748
// add own dictionary entry by directly assigning mrmime
5849
export function registerCustomMime(): void {
@@ -156,7 +147,7 @@ export function assetPlugin(config: ResolvedConfig): Plugin {
156147

157148
buildStart() {
158149
assetCache.set(this.environment, new Map())
159-
generatedAssetsMap.set(this.environment, new Map())
150+
cssEntriesMap.set(this.environment, new Set())
160151
},
161152

162153
resolveId(id) {
@@ -417,8 +408,6 @@ async function fileToBuiltUrl(
417408
originalFileName,
418409
source: content,
419410
})
420-
generatedAssetsMap.get(environment)!.set(referenceId, { originalFileName })
421-
422411
url = `__VITE_ASSET__${referenceId}__${postfix ? `$_${postfix}__` : ``}`
423412
}
424413

packages/vite/src/node/plugins/css.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ import { findNearestPackageData } from '../packages'
9393
import { addToHTMLProxyTransformResult } from './html'
9494
import {
9595
assetUrlRE,
96+
cssEntriesMap,
9697
fileToDevUrl,
9798
fileToUrl,
98-
generatedAssetsMap,
9999
publicAssetUrlCache,
100100
publicAssetUrlRE,
101101
publicFileToBuiltUrl,
@@ -483,7 +483,9 @@ export function cssPostPlugin(config: ResolvedConfig): RolldownPlugin {
483483
assetFileNames({
484484
type: 'asset',
485485
name: cssAssetName,
486+
names: [cssAssetName],
486487
originalFileName: null,
488+
originalFileNames: [],
487489
source: '/* vite internal call, ignore */',
488490
}),
489491
)
@@ -639,8 +641,6 @@ export function cssPostPlugin(config: ResolvedConfig): RolldownPlugin {
639641
},
640642

641643
async renderChunk(code, chunk, opts) {
642-
const generatedAssets = generatedAssetsMap.get(this.environment)!
643-
644644
let chunkCSS = ''
645645
// the chunk is empty if it's a dynamic entry chunk that only contains a CSS import
646646
const isJsChunkEmpty = code === '' && !chunk.isEntry
@@ -799,7 +799,6 @@ export function cssPostPlugin(config: ResolvedConfig): RolldownPlugin {
799799
originalFileName,
800800
source: content,
801801
})
802-
generatedAssets.set(referenceId, { originalFileName })
803802

804803
const filename = this.getFileName(referenceId)
805804
chunk.viteMetadata!.importedAssets.add(cleanUrl(filename))
@@ -857,7 +856,9 @@ export function cssPostPlugin(config: ResolvedConfig): RolldownPlugin {
857856
originalFileName,
858857
source: chunkCSS,
859858
})
860-
generatedAssets.set(referenceId, { originalFileName, isEntry })
859+
if (isEntry) {
860+
cssEntriesMap.get(this.environment)!.add(referenceId)
861+
}
861862
chunk.viteMetadata!.importedCss.add(this.getFileName(referenceId))
862863
} else if (this.environment.config.consumer === 'client') {
863864
// legacy build and inline css

packages/vite/src/node/plugins/html.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,8 @@ export function buildHtmlPlugin(config: ResolvedConfig): RolldownPlugin {
929929
const cssChunk =
930930
cssBundleName &&
931931
(Object.values(bundle).find(
932-
(chunk) => chunk.type === 'asset' && chunk.name === cssBundleName,
932+
(chunk) =>
933+
chunk.type === 'asset' && chunk.names.includes(cssBundleName),
933934
) as OutputAsset | undefined)
934935
if (cssChunk) {
935936
result = injectToHead(result, [

packages/vite/src/node/plugins/manifest.ts

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type {
88
import type { Plugin } from '../plugin'
99
import { normalizePath, sortObjectKeys } from '../utils'
1010
import { perEnvironmentState } from '../environment'
11-
import { generatedAssetsMap } from './asset'
11+
import { cssEntriesMap } from './asset'
1212

1313
const endsWithJSRE = /\.[cm]?js$/
1414

@@ -130,18 +130,15 @@ export function manifestPlugin(): Plugin {
130130
return manifestChunk
131131
}
132132

133-
const assets = generatedAssetsMap.get(this.environment)!
134-
const entryCssAssetFileNames = new Set()
135-
for (const [id, asset] of assets.entries()) {
136-
if (asset.isEntry) {
137-
try {
138-
const fileName = this.getFileName(id)
139-
entryCssAssetFileNames.add(fileName)
140-
} catch {
141-
// The asset was generated as part of a different output option.
142-
// It was already handled during the previous run of this plugin.
143-
assets.delete(id)
144-
}
133+
const entryCssReferenceIds = cssEntriesMap.get(this.environment)!
134+
const entryCssAssetFileNames = new Set(entryCssReferenceIds)
135+
for (const id of entryCssReferenceIds) {
136+
try {
137+
const fileName = this.getFileName(id)
138+
entryCssAssetFileNames.add(fileName)
139+
} catch {
140+
// The asset was generated as part of a different output option.
141+
// It was already handled during the previous run of this plugin.
145142
}
146143
}
147144

@@ -151,30 +148,28 @@ export function manifestPlugin(): Plugin {
151148
const chunk = bundle[file]
152149
if (chunk.type === 'chunk') {
153150
manifest[getChunkName(chunk)] = createChunk(chunk)
154-
} else if (chunk.type === 'asset' && typeof chunk.name === 'string') {
151+
} else if (chunk.type === 'asset' && chunk.names.length > 0) {
155152
// Add every unique asset to the manifest, keyed by its original name
156153
const src =
157-
chunk.originalFileName ?? '_' + path.basename(chunk.fileName)
154+
chunk.originalFileNames.length > 0
155+
? chunk.originalFileNames[0]
156+
: '_' + path.basename(chunk.fileName)
158157
const isEntry = entryCssAssetFileNames.has(chunk.fileName)
159158
const asset = createAsset(chunk, src, isEntry)
160159

161160
// If JS chunk and asset chunk are both generated from the same source file,
162161
// prioritize JS chunk as it contains more information
163162
const file = manifest[src]?.file
164-
if (file && endsWithJSRE.test(file)) continue
165-
166-
manifest[src] = asset
167-
fileNameToAsset.set(chunk.fileName, asset)
168-
}
169-
}
163+
if (!(file && endsWithJSRE.test(file))) {
164+
manifest[src] = asset
165+
fileNameToAsset.set(chunk.fileName, asset)
166+
}
170167

171-
// Add deduplicated assets to the manifest
172-
for (const [referenceId, { originalFileName }] of assets.entries()) {
173-
if (originalFileName && !manifest[originalFileName]) {
174-
const fileName = this.getFileName(referenceId)
175-
const asset = fileNameToAsset.get(fileName)
176-
if (asset) {
177-
manifest[originalFileName] = asset
168+
for (const originalFileName of chunk.originalFileNames.slice(1)) {
169+
const file = manifest[originalFileName]?.file
170+
if (!(file && endsWithJSRE.test(file))) {
171+
manifest[originalFileName] = asset
172+
}
178173
}
179174
}
180175
}

packages/vite/src/node/plugins/worker.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ import { fileToUrl } from './asset'
2424

2525
type WorkerBundleAsset = {
2626
fileName: string
27+
/** @deprecated */
2728
originalFileName: string | null
29+
originalFileNames: string[]
2830
source: string | Uint8Array
2931
}
3032

@@ -131,6 +133,7 @@ async function bundleWorkerEntry(
131133
saveEmitWorkerAsset(config, {
132134
fileName: outputChunk.fileName,
133135
originalFileName: null,
136+
originalFileNames: [],
134137
source: outputChunk.code,
135138
})
136139
}
@@ -169,6 +172,7 @@ function emitSourcemapForWorkerEntry(
169172
saveEmitWorkerAsset(config, {
170173
fileName: mapFileName,
171174
originalFileName: null,
175+
originalFileNames: [],
172176
source: data,
173177
})
174178
}
@@ -203,6 +207,7 @@ export async function workerFileToUrl(
203207
saveEmitWorkerAsset(config, {
204208
fileName,
205209
originalFileName: null,
210+
originalFileNames: [],
206211
source: outputChunk.code,
207212
})
208213
workerMap.bundle.set(id, fileName)
@@ -495,8 +500,9 @@ export function webWorkerPlugin(config: ResolvedConfig): RolldownPlugin {
495500
this.emitFile({
496501
type: 'asset',
497502
fileName: asset.fileName,
498-
originalFileName: asset.originalFileName,
499503
source: asset.source,
504+
// NOTE: fileName is already generated when bundling the worker
505+
// so no need to pass originalFileNames/names
500506
})
501507
})
502508
workerMap.assets.clear()

0 commit comments

Comments
 (0)