From 0b2e85f637645867abbcd1cb6b598e0edf7c872d Mon Sep 17 00:00:00 2001 From: fi3ework Date: Wed, 7 Apr 2021 01:35:17 +0800 Subject: [PATCH 1/4] fix: filter out empty srcset (#2863) --- packages/vite/src/node/utils.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index 2a49685df92571..ebbb6a537d9578 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -380,13 +380,16 @@ export async function processSrcSet( srcs: string, replacer: (arg: ImageCandidate) => Promise ): Promise { - const imageCandidates: ImageCandidate[] = srcs.split(',').map((s) => { - const [url, descriptor] = s - .replace(escapedSpaceCharacters, ' ') - .trim() - .split(' ', 2) - return { url, descriptor } - }) + const imageCandidates: ImageCandidate[] = srcs + .split(',') + .map((s) => { + const [url, descriptor] = s + .replace(escapedSpaceCharacters, ' ') + .trim() + .split(' ', 2) + return { url, descriptor } + }) + .filter(({ url, descriptor }) => url && descriptor) const ret = await Promise.all( imageCandidates.map(async ({ url, descriptor }) => { From 063a90404417e2762042030145389275e5b8fc74 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Sun, 11 Apr 2021 01:27:48 +0800 Subject: [PATCH 2/4] fix: should allow srcset on source tag --- packages/vite/src/node/plugins/asset.ts | 5 +++++ packages/vite/src/node/plugins/html.ts | 2 +- packages/vite/src/node/utils.ts | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/plugins/asset.ts b/packages/vite/src/node/plugins/asset.ts index 950f7e86c59696..0569d301a98dbe 100644 --- a/packages/vite/src/node/plugins/asset.ts +++ b/packages/vite/src/node/plugins/asset.ts @@ -260,6 +260,11 @@ export async function urlToBuiltUrl( const file = url.startsWith('/') ? path.join(config.root, url) : path.join(path.dirname(importer), url) + const stats = await fsp.stat(file) + if (stats.isDirectory()) { + return url + } + return fileToBuiltUrl( file, config, diff --git a/packages/vite/src/node/plugins/html.ts b/packages/vite/src/node/plugins/html.ts index 66991fe93e6215..77b27feceddaec 100644 --- a/packages/vite/src/node/plugins/html.ts +++ b/packages/vite/src/node/plugins/html.ts @@ -69,7 +69,7 @@ export function htmlInlineScriptProxyPlugin(): Plugin { export const assetAttrsConfig: Record = { link: ['href'], video: ['src', 'poster'], - source: ['src'], + source: ['src', 'srcset'], img: ['src', 'srcset'], image: ['xlink:href', 'href'], use: ['xlink:href', 'href'] diff --git a/packages/vite/src/node/utils.ts b/packages/vite/src/node/utils.ts index ebbb6a537d9578..f259fb61ebe667 100644 --- a/packages/vite/src/node/utils.ts +++ b/packages/vite/src/node/utils.ts @@ -389,7 +389,7 @@ export async function processSrcSet( .split(' ', 2) return { url, descriptor } }) - .filter(({ url, descriptor }) => url && descriptor) + .filter(({ url }) => !!url) const ret = await Promise.all( imageCandidates.map(async ({ url, descriptor }) => { From 0f4098ed54f086fcbd06d2351a954876361d4835 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Sun, 11 Apr 2021 01:58:18 +0800 Subject: [PATCH 3/4] fix: should clean url --- packages/vite/src/node/plugins/asset.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/vite/src/node/plugins/asset.ts b/packages/vite/src/node/plugins/asset.ts index 0569d301a98dbe..141fd636a559e5 100644 --- a/packages/vite/src/node/plugins/asset.ts +++ b/packages/vite/src/node/plugins/asset.ts @@ -260,8 +260,8 @@ export async function urlToBuiltUrl( const file = url.startsWith('/') ? path.join(config.root, url) : path.join(path.dirname(importer), url) - const stats = await fsp.stat(file) - if (stats.isDirectory()) { + const stat = await fsp.stat(cleanUrl(file)) + if (stat.isDirectory()) { return url } From aedabcc4419eb9dc7d901158a7a628bf4aada825 Mon Sep 17 00:00:00 2001 From: fi3ework Date: Fri, 16 Apr 2021 22:43:38 +0800 Subject: [PATCH 4/4] fix: revert dir filter --- packages/vite/src/node/plugins/asset.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/vite/src/node/plugins/asset.ts b/packages/vite/src/node/plugins/asset.ts index 141fd636a559e5..950f7e86c59696 100644 --- a/packages/vite/src/node/plugins/asset.ts +++ b/packages/vite/src/node/plugins/asset.ts @@ -260,11 +260,6 @@ export async function urlToBuiltUrl( const file = url.startsWith('/') ? path.join(config.root, url) : path.join(path.dirname(importer), url) - const stat = await fsp.stat(cleanUrl(file)) - if (stat.isDirectory()) { - return url - } - return fileToBuiltUrl( file, config,