@@ -18,6 +18,7 @@ import {
18
18
19
19
import { ensureWatchedFile , setupWatchers } from './utils/watch' ;
20
20
import { resolveViaPackageJsonSvelte } from './utils/resolve' ;
21
+ import { PartialResolvedId } from 'rollup' ;
21
22
import { toRollupError } from './utils/error' ;
22
23
import { saveSvelteMetadata } from './utils/optimizer' ;
23
24
import { svelteInspector } from './ui/inspector/plugin' ;
@@ -46,7 +47,9 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
46
47
let viteConfig : ResolvedConfig ;
47
48
/* eslint-disable no-unused-vars */
48
49
let compileSvelte : CompileSvelte ;
50
+ /* eslint-enable no-unused-vars */
49
51
52
+ let resolvedSvelteSSR : Promise < PartialResolvedId | null > ;
50
53
const api : PluginAPI = { } ;
51
54
const plugins : Plugin [ ] = [
52
55
{
@@ -133,6 +136,24 @@ export function svelte(inlineOptions?: Partial<Options>): Plugin[] {
133
136
}
134
137
}
135
138
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
+ }
136
157
//@ts -expect-error scan
137
158
const scan = ! ! opts ?. scan ; // scanner phase of optimizeDeps
138
159
const isPrebundled =
0 commit comments