From 5a6202e38b1694a439eaf26a912644409df10b61 Mon Sep 17 00:00:00 2001 From: sapphi-red Date: Wed, 30 Nov 2022 02:18:28 +0900 Subject: [PATCH 1/2] fix: respect optimizeDeps.include for dep optimizer --- packages/vite/src/node/optimizer/index.ts | 3 ++- packages/vite/src/node/plugins/resolve.ts | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index 7f904bc17bccc6..8bf99736c7ae62 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -707,7 +707,8 @@ export async function addManuallyIncludedOptimizeDeps( const resolve = config.createResolver({ asSrc: false, scan: true, - ssrOptimizeCheck: ssr + ssrOptimizeCheck: ssr, + ssrConfig: config.ssr }) for (const id of [...optimizeDepsInclude, ...extra]) { // normalize 'foo >bar` as 'foo > bar' to prevent same id being added diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index c436f0837386c1..9f228fa8dec4c1 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -800,11 +800,11 @@ export function tryNodeResolve( : OPTIMIZABLE_ENTRY_RE.test(resolved) let exclude = depsOptimizer?.options.exclude - let include = depsOptimizer?.options.exclude + let include = depsOptimizer?.options.include if (options.ssrOptimizeCheck) { // we don't have the depsOptimizer exclude = options.ssrConfig?.optimizeDeps?.exclude - include = options.ssrConfig?.optimizeDeps?.exclude + include = options.ssrConfig?.optimizeDeps?.include } const skipOptimization = @@ -813,6 +813,9 @@ export function tryNodeResolve( exclude?.includes(pkgId) || exclude?.includes(nestedPath) || SPECIAL_QUERY_RE.test(resolved) || + // During dev SSR, we don't have a way to reload the module graph if + // a non-optimized dep is found. So we need to skip optimization here. + // The only optimized deps are the ones explicitly listed in the config. (!isBuild && ssr) || // Only optimize non-external CJS deps during SSR by default (ssr && From 2acc6822df8b04d25dfa9994511e170237f1deb4 Mon Sep 17 00:00:00 2001 From: patak Date: Tue, 29 Nov 2022 22:44:37 +0100 Subject: [PATCH 2/2] fix: optimize explicit deps in SSR dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 翠 / green --- packages/vite/src/node/plugins/resolve.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vite/src/node/plugins/resolve.ts b/packages/vite/src/node/plugins/resolve.ts index 9f228fa8dec4c1..ae612148769960 100644 --- a/packages/vite/src/node/plugins/resolve.ts +++ b/packages/vite/src/node/plugins/resolve.ts @@ -816,7 +816,7 @@ export function tryNodeResolve( // During dev SSR, we don't have a way to reload the module graph if // a non-optimized dep is found. So we need to skip optimization here. // The only optimized deps are the ones explicitly listed in the config. - (!isBuild && ssr) || + (!options.ssrOptimizeCheck && !isBuild && ssr) || // Only optimize non-external CJS deps during SSR by default (ssr && !isCJS &&