From e5298bf916475f85fed76cf75a4eb82815984829 Mon Sep 17 00:00:00 2001 From: yoho Date: Sat, 20 Aug 2022 17:27:20 +0800 Subject: [PATCH] fix: pathname --- packages/vite/src/node/__tests__/utils.spec.ts | 18 ++++++++---------- packages/vite/src/node/utils.ts | 14 ++++---------- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/packages/vite/src/node/__tests__/utils.spec.ts b/packages/vite/src/node/__tests__/utils.spec.ts index 0519567b055b80..7d5fa7270351dd 100644 --- a/packages/vite/src/node/__tests__/utils.spec.ts +++ b/packages/vite/src/node/__tests__/utils.spec.ts @@ -28,21 +28,19 @@ describe('injectQuery', () => { test('relative path "./"', () => { expect(injectQuery('./usr/vite/%20a%20', 'direct')).toEqual( - 'usr/vite/%20a%20?direct' + './usr/vite/%20a%20?direct' + ) + }) + + test('relative path "../"', () => { + expect(injectQuery('../usr/vite/%20a%20', 'direct')).toEqual( + '../usr/vite/%20a%20?direct' ) }) test('file path', () => { expect(injectQuery('file:///usr/vite/%20a%20', 'direct')).toMatch( - !isWindows - ? // d/a/vite/vite/file:/usr/vite/%20a%20?direct - new RegExp( - `${process.cwd().slice(1)}/file:/usr/vite/%20a%20\\?direct` - ) - : // D:/a/vite/vite/file:/usr/vite/%20a%20?direct - new RegExp( - `${normalizePath(process.cwd())}/file:/usr/vite/%20a%20\\?direct` - ) + new RegExp(`file:///usr/vite/%20a%20\\?direct`) ) }) diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 1ef6d8a204b61d..aa12565b377eac 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -311,16 +311,10 @@ export function injectQuery(url: string, queryToInject: string): string { if (resolvedUrl.protocol !== 'relative:') { resolvedUrl = pathToFileURL(url) } - let { protocol, pathname, search, hash } = resolvedUrl - // pathname must startWith '/' - // if url[0] is not '/' should be relative path - if (protocol === 'file:' || url[0] !== '/') { - pathname = pathname.slice(1) - } - pathname = decodeURIComponent(pathname) - return `${pathname}?${queryToInject}${search ? `&` + search.slice(1) : ''}${ - hash ?? '' - }` + const { search, hash } = resolvedUrl + return `${url.split('?')[0]}?${queryToInject}${ + search ? `&` + search.slice(1) : '' + }${hash ?? ''}` } const timestampRE = /\bt=\d{13}&?\b/