diff --git a/packages/vite/src/node/plugins/worker.ts b/packages/vite/src/node/plugins/worker.ts index b4f26f83355552..0df6f9d843e99c 100644 --- a/packages/vite/src/node/plugins/worker.ts +++ b/packages/vite/src/node/plugins/worker.ts @@ -218,7 +218,7 @@ export function webWorkerPlugin(config: ResolvedConfig): Plugin { }, shouldTransformCachedModule({ id }) { - if (isBuild && isWorkerQueryId(id) && config.build.watch) { + if (isBuild && config.build.watch && isWorkerQueryId(id)) { return true } }, diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index 85ec7c5b57240e..e88d1ac3362a43 100644 --- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts @@ -96,6 +96,17 @@ function getWorkerType(raw: string, clean: string, i: number): WorkerType { return 'classic' } +function isIncludeWorkerImportMetaUrl(code: string): boolean { + if ( + (code.includes('new Worker') || code.includes('new SharedWorker')) && + code.includes('new URL') && + code.includes(`import.meta.url`) + ) { + return true + } + return false +} + export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { const isBuild = config.command === 'build' let workerResolver: ResolveFn @@ -113,14 +124,15 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { return { name: 'vite:worker-import-meta-url', + shouldTransformCachedModule({ code }) { + if (isBuild && config.build.watch && isIncludeWorkerImportMetaUrl(code)) { + return true + } + }, + async transform(code, id, options) { const ssr = options?.ssr === true - if ( - !options?.ssr && - (code.includes('new Worker') || code.includes('new SharedWorker')) && - code.includes('new URL') && - code.includes(`import.meta.url`) - ) { + if (!options?.ssr && isIncludeWorkerImportMetaUrl(code)) { const query = parseRequest(id) let s: MagicString | undefined const cleanString = stripLiteral(code)