From 66656c9c1deccee441a9f7679d0e630dc0b5ce0d Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Fri, 15 Sep 2023 15:17:14 +0900 Subject: [PATCH] feat: use `import.meta.url` instead of `self.location` --- packages/vite/src/node/plugins/assetImportMetaUrl.ts | 8 ++------ packages/vite/src/node/plugins/workerImportMetaUrl.ts | 3 ++- playground/assets/index.html | 2 +- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/vite/src/node/plugins/assetImportMetaUrl.ts b/packages/vite/src/node/plugins/assetImportMetaUrl.ts index e1362fe42df38d..f57db10321befb 100644 --- a/packages/vite/src/node/plugins/assetImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/assetImportMetaUrl.ts @@ -92,10 +92,6 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin { // A hack to allow 'as' & 'query' exist at the same time query: injectQuery(queryString, 'url'), } - // Note: native import.meta.url is not supported in the baseline - // target so we use the global location here. It can be - // window.location or self.location in case it is used in a Web Worker. - // @see https://developer.mozilla.org/en-US/docs/Web/API/Window/self s.update( index, index + exp.length, @@ -103,7 +99,7 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin { pattern, )}, ${JSON.stringify( globOptions, - )}))[${pureUrl}], self.location)`, + )}))[${pureUrl}], import.meta.url)`, ) continue } @@ -154,7 +150,7 @@ export function assetImportMetaUrlPlugin(config: ResolvedConfig): Plugin { s.update( index, index + exp.length, - `new URL(${JSON.stringify(builtUrl)}, self.location)`, + `new URL(${JSON.stringify(builtUrl)}, import.meta.url)`, ) } if (s) { diff --git a/packages/vite/src/node/plugins/workerImportMetaUrl.ts b/packages/vite/src/node/plugins/workerImportMetaUrl.ts index 385566c1108ec3..85ec7c5b57240e 100644 --- a/packages/vite/src/node/plugins/workerImportMetaUrl.ts +++ b/packages/vite/src/node/plugins/workerImportMetaUrl.ts @@ -180,7 +180,8 @@ export function workerImportMetaUrlPlugin(config: ResolvedConfig): Plugin { s.update( urlIndex, urlIndex + exp.length, - `new URL(${JSON.stringify(builtUrl)}, self.location)`, + // add `'' +` to skip vite:asset-import-meta-url plugin + `new URL('' + ${JSON.stringify(builtUrl)}, import.meta.url)`, ) } diff --git a/playground/assets/index.html b/playground/assets/index.html index 0de5f582b61122..9efc3239f8d9b9 100644 --- a/playground/assets/index.html +++ b/playground/assets/index.html @@ -418,7 +418,7 @@

assets in noscript

document.querySelector('.import-meta-url-dep-img').src = metaUrlDep // testing URLs for public assets served at the public base path - // equivalent to `new URL(`${import.meta.env.BASE_URL}/icon.png`, self.location) + // equivalent to `new URL(`${import.meta.env.BASE_URL}/icon.png`, import.meta.url) const metaUrlBasePath = new URL('/icon.png', import.meta.url) text('.import-meta-url-base-path', metaUrlBasePath) document.querySelector('.import-meta-url-base-path-img').src = metaUrlBasePath