From 461ee0c804ae6177f1d74351d1e409db8f7a436a Mon Sep 17 00:00:00 2001 From: yoho Date: Sat, 26 Mar 2022 14:02:18 +0800 Subject: [PATCH 1/4] fix: import.meta.url in worker --- packages/playground/worker/url-worker.js | 2 +- packages/vite/src/node/plugins/define.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/playground/worker/url-worker.js b/packages/playground/worker/url-worker.js index 79d05da0f06082..c25cbefdff89ec 100644 --- a/packages/playground/worker/url-worker.js +++ b/packages/playground/worker/url-worker.js @@ -1 +1 @@ -self.postMessage('A string' + import.meta.env.BASE_URL) +self.postMessage('A string' + import.meta.env.BASE_URL + import.meta.url) diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index 19ca28b34433a0..ee505dd8476e16 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -10,6 +10,7 @@ const isNonJsRequest = (request: string): boolean => nonJsRe.test(request) export function definePlugin(config: ResolvedConfig): Plugin { const isBuild = config.command === 'build' + const isWorker = config.isWorker const processNodeEnv: Record = { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || config.mode), @@ -62,7 +63,12 @@ export function definePlugin(config: ResolvedConfig): Plugin { ...(isNeedProcessEnv ? processNodeEnv : {}), ...userDefine, ...importMetaKeys, - ...processEnv + ...processEnv, + ...(isWorker + ? { + 'import.meta.url': 'self.location.href' + } + : {}) } const replacementsKeys = Object.keys(replacements) From 8834f8f9100d6fc1384e2d05c75a09b18c762c95 Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 27 Mar 2022 10:04:08 +0800 Subject: [PATCH 2/4] feat: test in nested worker --- packages/playground/worker/__tests__/worker.spec.ts | 5 ++++- packages/playground/worker/sub-worker.js | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/playground/worker/__tests__/worker.spec.ts b/packages/playground/worker/__tests__/worker.spec.ts index fc381467f6a4d2..8f6e6f9bda61ff 100644 --- a/packages/playground/worker/__tests__/worker.spec.ts +++ b/packages/playground/worker/__tests__/worker.spec.ts @@ -52,7 +52,10 @@ test.concurrent.each([[true], [false]])('shared worker', async (doTick) => { }) test('worker emitted', async () => { - await untilUpdated(() => page.textContent('.nested-worker'), 'pong') + await untilUpdated( + () => page.textContent('.nested-worker'), + 'pong http://localhost:3000/iife/sub-worker.js?worker_file' + ) }) if (isBuild) { diff --git a/packages/playground/worker/sub-worker.js b/packages/playground/worker/sub-worker.js index eec65b86a0382a..eff49dfbb46ba6 100644 --- a/packages/playground/worker/sub-worker.js +++ b/packages/playground/worker/sub-worker.js @@ -1,5 +1,5 @@ self.onmessage = (event) => { if (event.data === 'ping') { - self.postMessage('pong') + self.postMessage(`pong ${import.meta.url}`) } } From b521aa4b8b1544b1f0806736d478d4cfdff6e750 Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 27 Mar 2022 10:05:59 +0800 Subject: [PATCH 3/4] test: add descript --- packages/playground/worker/__tests__/worker.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/playground/worker/__tests__/worker.spec.ts b/packages/playground/worker/__tests__/worker.spec.ts index 8f6e6f9bda61ff..263c49cff52fb9 100644 --- a/packages/playground/worker/__tests__/worker.spec.ts +++ b/packages/playground/worker/__tests__/worker.spec.ts @@ -51,7 +51,7 @@ test.concurrent.each([[true], [false]])('shared worker', async (doTick) => { await waitSharedWorkerTick(page) }) -test('worker emitted', async () => { +test('worker emitted and import.meta.url in nested worker', async () => { await untilUpdated( () => page.textContent('.nested-worker'), 'pong http://localhost:3000/iife/sub-worker.js?worker_file' From a508e00706c06134df6cf7f4365c20f846018abc Mon Sep 17 00:00:00 2001 From: yoho Date: Sun, 27 Mar 2022 11:59:02 +0800 Subject: [PATCH 4/4] chore: move the import.meat at one spot. --- packages/vite/src/node/plugins/define.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/vite/src/node/plugins/define.ts b/packages/vite/src/node/plugins/define.ts index ee505dd8476e16..024cf32d41f72a 100644 --- a/packages/vite/src/node/plugins/define.ts +++ b/packages/vite/src/node/plugins/define.ts @@ -41,7 +41,12 @@ export function definePlugin(config: ResolvedConfig): Plugin { Object.assign(importMetaKeys, { 'import.meta.env.': `({}).`, 'import.meta.env': JSON.stringify(config.env), - 'import.meta.hot': `false` + 'import.meta.hot': `false`, + ...(isWorker + ? { + 'import.meta.url': 'self.location.href' + } + : {}) }) } @@ -63,12 +68,7 @@ export function definePlugin(config: ResolvedConfig): Plugin { ...(isNeedProcessEnv ? processNodeEnv : {}), ...userDefine, ...importMetaKeys, - ...processEnv, - ...(isWorker - ? { - 'import.meta.url': 'self.location.href' - } - : {}) + ...processEnv } const replacementsKeys = Object.keys(replacements)