Skip to content

Commit 515caa5

Browse files
authored
fix: Dev SSR dep optimization + respect optimizeDeps.include (#11123)
1 parent 14980a1 commit 515caa5

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

packages/vite/src/node/optimizer/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -707,7 +707,8 @@ export async function addManuallyIncludedOptimizeDeps(
707707
const resolve = config.createResolver({
708708
asSrc: false,
709709
scan: true,
710-
ssrOptimizeCheck: ssr
710+
ssrOptimizeCheck: ssr,
711+
ssrConfig: config.ssr
711712
})
712713
for (const id of [...optimizeDepsInclude, ...extra]) {
713714
// normalize 'foo >bar` as 'foo > bar' to prevent same id being added

packages/vite/src/node/plugins/resolve.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -800,11 +800,11 @@ export function tryNodeResolve(
800800
: OPTIMIZABLE_ENTRY_RE.test(resolved)
801801

802802
let exclude = depsOptimizer?.options.exclude
803-
let include = depsOptimizer?.options.exclude
803+
let include = depsOptimizer?.options.include
804804
if (options.ssrOptimizeCheck) {
805805
// we don't have the depsOptimizer
806806
exclude = options.ssrConfig?.optimizeDeps?.exclude
807-
include = options.ssrConfig?.optimizeDeps?.exclude
807+
include = options.ssrConfig?.optimizeDeps?.include
808808
}
809809

810810
const skipOptimization =
@@ -813,7 +813,10 @@ export function tryNodeResolve(
813813
exclude?.includes(pkgId) ||
814814
exclude?.includes(nestedPath) ||
815815
SPECIAL_QUERY_RE.test(resolved) ||
816-
(!isBuild && ssr) ||
816+
// During dev SSR, we don't have a way to reload the module graph if
817+
// a non-optimized dep is found. So we need to skip optimization here.
818+
// The only optimized deps are the ones explicitly listed in the config.
819+
(!options.ssrOptimizeCheck && !isBuild && ssr) ||
817820
// Only optimize non-external CJS deps during SSR by default
818821
(ssr &&
819822
!isCJS &&

0 commit comments

Comments
 (0)