@@ -18,6 +18,7 @@ import {
1818
1919import { ensureWatchedFile , setupWatchers } from './utils/watch' ;
2020import { resolveViaPackageJsonSvelte } from './utils/resolve' ;
21+ import { PartialResolvedId } from 'rollup' ;
2122import { toRollupError } from './utils/error' ;
2223import { saveSvelteMetadata } from './utils/optimizer' ;
2324import { svelteInspector } from './ui/inspector/plugin' ;
@@ -46,7 +47,9 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
4647 let viteConfig : ResolvedConfig ;
4748 /* eslint-disable no-unused-vars */
4849 let compileSvelte : CompileSvelte ;
50+ /* eslint-enable no-unused-vars */
4951
52+ let resolvedSvelteSSR : Promise < PartialResolvedId | null > ;
5053 const api : PluginAPI = { } ;
5154 const plugins : Plugin [ ] = [
5255 {
@@ -133,6 +136,24 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
133136 }
134137 }
135138
139+ if ( ssr && importee === 'svelte' ) {
140+ if ( ! resolvedSvelteSSR ) {
141+ resolvedSvelteSSR = this . resolve ( 'svelte/ssr' , undefined , { skipSelf : true } ) . then (
142+ ( svelteSSR ) => {
143+ log . debug ( 'resolved svelte to svelte/ssr' ) ;
144+ return svelteSSR ;
145+ } ,
146+ ( err ) => {
147+ log . debug (
148+ 'failed to resolve svelte to svelte/ssr. Update svelte to a version that exports it' ,
149+ err
150+ ) ;
151+ return null ; // returning null here leads to svelte getting resolved regularly
152+ }
153+ ) ;
154+ }
155+ return resolvedSvelteSSR ;
156+ }
136157 //@ts -expect-error scan
137158 const scan = ! ! opts ?. scan ; // scanner phase of optimizeDeps
138159 const isPrebundled =
0 commit comments