From ae57b2489a3651888fb14e1fc058eb39cbfdcd95 Mon Sep 17 00:00:00 2001 From: alex8088 <244096523@qq.com> Date: Wed, 29 Oct 2025 21:12:13 +0800 Subject: [PATCH] fix(asset): normalize imported public asset chunk path --- src/plugins/asset.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/plugins/asset.ts b/src/plugins/asset.ts index e3d7fb4..8ad426a 100644 --- a/src/plugins/asset.ts +++ b/src/plugins/asset.ts @@ -1,7 +1,7 @@ import path from 'node:path' import fs from 'node:fs/promises' import type { SourceMapInput } from 'rollup' -import { type Plugin } from 'vite' +import { type Plugin, normalizePath } from 'vite' import MagicString from 'magic-string' import { cleanUrl, getHash, toRelativePath } from '../utils' import { supportImportMetaPaths } from '../electron' @@ -28,7 +28,6 @@ export default async function loadWasm(file, importObject = {}) { export default function assetPlugin(): Plugin { let publicDir = '' - let outDir = '' const publicAssetPathCache = new Map() const assetCache = new Map() const isImportMetaPathSupported = supportImportMetaPaths() @@ -42,7 +41,6 @@ export default function assetPlugin(): Plugin { }, configResolved(config): void { publicDir = config.publicDir - outDir = config.build.outDir }, resolveId(id): string | void { if (id === wasmHelperId) { @@ -105,7 +103,7 @@ export default function assetPlugin(): Plugin { export default importObject => loadWasm(${referenceId}, importObject)` } }, - renderChunk(code, chunk, { sourcemap }): { code: string; map: SourceMapInput } | null { + renderChunk(code, chunk, { sourcemap, dir }): { code: string; map: SourceMapInput } | null { let match: RegExpExecArray | null let s: MagicString | undefined @@ -126,7 +124,7 @@ export default function assetPlugin(): Plugin { s ||= new MagicString(code) const [full, hash] = match const filename = publicAssetPathCache.get(hash)! - const outputFilepath = toRelativePath(filename, path.join(outDir, chunk.fileName)) + const outputFilepath = toRelativePath(filename, normalizePath(path.join(dir!, chunk.fileName))) const replacement = JSON.stringify(outputFilepath) s.overwrite(match.index, match.index + full.length, replacement, { contentOnly: true