From 79c10e67b3e47b5db2ddbba36846095d758ce48f Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Wed, 22 Jun 2022 15:05:26 +0900 Subject: [PATCH] fix(optimizer): resolve relative path by Vite resolver --- .../src/node/optimizer/esbuildDepPlugin.ts | 48 +++++++++---------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/packages/vite/src/node/optimizer/esbuildDepPlugin.ts b/packages/vite/src/node/optimizer/esbuildDepPlugin.ts index 09866eb300c2a3..8a93f4367bc7b9 100644 --- a/packages/vite/src/node/optimizer/esbuildDepPlugin.ts +++ b/packages/vite/src/node/optimizer/esbuildDepPlugin.ts @@ -149,35 +149,35 @@ export function esbuildDepPlugin( } } - build.onResolve( - { filter: /^[\w@][^:]/ }, - async ({ path: id, importer, kind }) => { - if (moduleListContains(config.optimizeDeps?.exclude, id)) { - return { - path: id, - external: true - } + build.onResolve({ filter: /./ }, async ({ path: id, importer, kind }) => { + if ( + /^[\w@][^:]/.test(id) && + moduleListContains(config.optimizeDeps?.exclude, id) + ) { + return { + path: id, + external: true } + } - // ensure esbuild uses our resolved entries - let entry: { path: string; namespace: string } | undefined - // if this is an entry, return entry namespace resolve result - if (!importer) { - if ((entry = resolveEntry(id))) return entry - // check if this is aliased to an entry - also return entry namespace - const aliased = await _resolve(id, undefined, true) - if (aliased && (entry = resolveEntry(aliased))) { - return entry - } + // ensure esbuild uses our resolved entries + let entry: { path: string; namespace: string } | undefined + // if this is an entry, return entry namespace resolve result + if (!importer) { + if ((entry = resolveEntry(id))) return entry + // check if this is aliased to an entry - also return entry namespace + const aliased = await _resolve(id, undefined, true) + if (aliased && (entry = resolveEntry(aliased))) { + return entry } + } - // use vite's own resolver - const resolved = await resolve(id, importer, kind) - if (resolved) { - return resolveResult(id, resolved) - } + // use vite's own resolver + const resolved = await resolve(id, importer, kind) + if (resolved) { + return resolveResult(id, resolved) } - ) + }) // For entry files, we'll read it ourselves and construct a proxy module // to retain the entry's raw id instead of file path so that esbuild