From e01e1e907a4951ac90a8314ff5f246d9d18b81b2 Mon Sep 17 00:00:00 2001 From: ihch Date: Fri, 20 Oct 2023 16:11:31 +0900 Subject: [PATCH 1/3] fix(worker): Rebuild the worker to load using import.meta.url in watch mode. --- .../src/node/plugins/workerImportMetaUrl.ts | 24 ++++++++++++++----- 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index 85ec7c5b57240e..42b479f6b162a6 100644 --- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts @@ -110,17 +110,29 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { asSrc: true, } + const 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 + } + 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) From 60f92c4025ea06c63a1b5b072219fe1c389cea32 Mon Sep 17 00:00:00 2001 From: ihch Date: Fri, 27 Oct 2023 20:05:22 +0900 Subject: [PATCH 2/3] refactor: move isIncludeWorkerImportMetaUrl outside of plugin function --- .../src/node/plugins/workerImportMetaUrl.ts | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index 42b479f6b162a6..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 @@ -110,17 +121,6 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { asSrc: true, } - const 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 - } - return { name: 'vite:worker-import-meta-url', From b211b26e7c960547cc467a6f00763a05ee9c4741 Mon Sep 17 00:00:00 2001 From: ihch Date: Fri, 27 Oct 2023 20:05:51 +0900 Subject: [PATCH 3/3] perf: change the order of condition checks --- packages/vite/src/node/plugins/worker.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 } },