@@ -248,6 +248,7 @@ type ReactRouterPluginContext = {
248248 publicPath : string ;
249249 reactRouterConfig : ResolvedReactRouterConfig ;
250250 viteManifestEnabled : boolean ;
251+ buildManifest : BuildManifest ;
251252} ;
252253
253254let virtualHmrRuntime = VirtualModule . create ( "hmr-runtime" ) ;
@@ -510,11 +511,11 @@ const resolveEnvironmentBuildContext = ({
510511} ;
511512
512513let getServerBuildDirectory = (
513- ctx : ReactRouterPluginContext ,
514+ reactRouterConfig : ResolvedReactRouterConfig ,
514515 { serverBundleId } : { serverBundleId ?: string } = { }
515516) =>
516517 path . join (
517- ctx . reactRouterConfig . buildDirectory ,
518+ reactRouterConfig . buildDirectory ,
518519 "server" ,
519520 ...( serverBundleId ? [ serverBundleId ] : [ ] )
520521 ) ;
@@ -649,6 +650,11 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
649650 ? resolveEnvironmentBuildContext ( { viteCommand, viteUserConfig } )
650651 : null ;
651652
653+ buildManifest =
654+ ctx ?. buildManifest ??
655+ ctx ?. environmentBuildContext ?. buildManifest ??
656+ ( await getBuildManifest ( { reactRouterConfig, rootDirectory } ) ) ;
657+
652658 firstLoad = false ;
653659
654660 ctx = {
@@ -659,6 +665,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
659665 entryServerFilePath,
660666 publicPath,
661667 viteManifestEnabled,
668+ buildManifest,
662669 } ;
663670 } ;
664671
@@ -1116,12 +1123,6 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
11161123 } ) ;
11171124
11181125 await updatePluginContext ( ) ;
1119- buildManifest =
1120- ctx . reactRouterConfig . future . unstable_viteEnvironmentApi ||
1121- viteCommand === "serve"
1122- ? await getBuildManifest ( ctx )
1123- : ctx . environmentBuildContext ?. buildManifest ;
1124- invariant ( buildManifest ) ;
11251126
11261127 Object . assign (
11271128 process . env ,
@@ -1135,16 +1136,13 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
11351136 )
11361137 ) ;
11371138
1138- let environments = await getEnvironmentsOptions (
1139- ctx ,
1140- buildManifest ,
1141- viteCommand ,
1142- { viteUserConfig }
1143- ) ;
1139+ let environments = await getEnvironmentsOptions ( ctx , viteCommand , {
1140+ viteUserConfig,
1141+ } ) ;
11441142
11451143 let serverEnvironment = getServerEnvironmentValues (
11461144 environments ,
1147- buildManifest
1145+ ctx . buildManifest
11481146 ) [ 0 ] ;
11491147 invariant ( serverEnvironment ) ;
11501148
@@ -1564,7 +1562,7 @@ export const reactRouterVitePlugin: ReactRouterVitePlugin = () => {
15641562 let serverBuildDirectory = future . unstable_viteEnvironmentApi
15651563 ? this . environment . config ?. build ?. outDir
15661564 : ctx . environmentBuildContext ?. options . build ?. outDir ??
1567- getServerBuildDirectory ( ctx ) ;
1565+ getServerBuildDirectory ( ctx . reactRouterConfig ) ;
15681566
15691567 let ssrViteManifest = await loadViteManifest ( serverBuildDirectory ) ;
15701568 let ssrAssetPaths = getViteManifestAssetPaths ( ssrViteManifest ) ;
@@ -3156,23 +3154,27 @@ export async function cleanViteManifests(
31563154 ) ;
31573155}
31583156
3159- export async function getBuildManifest (
3160- ctx : ReactRouterPluginContext
3161- ) : Promise < BuildManifest > {
3162- let { routes, serverBundles, appDirectory } = ctx . reactRouterConfig ;
3157+ export async function getBuildManifest ( {
3158+ reactRouterConfig,
3159+ rootDirectory,
3160+ } : {
3161+ reactRouterConfig : ResolvedReactRouterConfig ;
3162+ rootDirectory : string ;
3163+ } ) : Promise < BuildManifest > {
3164+ let { routes, serverBundles, appDirectory } = reactRouterConfig ;
31633165
31643166 if ( ! serverBundles ) {
31653167 return { routes } ;
31663168 }
31673169
31683170 let { normalizePath } = await import ( "vite" ) ;
3169- let serverBuildDirectory = getServerBuildDirectory ( ctx ) ;
3170- let resolvedAppDirectory = path . resolve ( ctx . rootDirectory , appDirectory ) ;
3171+ let serverBuildDirectory = getServerBuildDirectory ( reactRouterConfig ) ;
3172+ let resolvedAppDirectory = path . resolve ( rootDirectory , appDirectory ) ;
31713173 let rootRelativeRoutes = Object . fromEntries (
31723174 Object . entries ( routes ) . map ( ( [ id , route ] ) => {
31733175 let filePath = path . join ( resolvedAppDirectory , route . file ) ;
31743176 let rootRelativeFilePath = normalizePath (
3175- path . relative ( ctx . rootDirectory , filePath )
3177+ path . relative ( rootDirectory , filePath )
31763178 ) ;
31773179 return [ id , { ...route , file : rootRelativeFilePath } ] ;
31783180 } )
@@ -3199,7 +3201,7 @@ export async function getBuildManifest(
31993201 if ( typeof serverBundleId !== "string" ) {
32003202 throw new Error ( `The "serverBundles" function must return a string` ) ;
32013203 }
3202- if ( ctx . reactRouterConfig . future . unstable_viteEnvironmentApi ) {
3204+ if ( reactRouterConfig . future . unstable_viteEnvironmentApi ) {
32033205 // Server bundle IDs must be valid Vite environment names, so hyphens are not allowed
32043206 if ( ! / ^ [ a - z A - Z 0 - 9 _ ] + $ / . test ( serverBundleId ) ) {
32053207 throw new Error (
@@ -3220,10 +3222,10 @@ export async function getBuildManifest(
32203222 file : normalizePath (
32213223 path . join (
32223224 path . relative (
3223- ctx . rootDirectory ,
3225+ rootDirectory ,
32243226 path . join ( serverBuildDirectory , serverBundleId )
32253227 ) ,
3226- ctx . reactRouterConfig . serverBuildFile
3228+ reactRouterConfig . serverBuildFile
32273229 )
32283230 ) ,
32293231 } ;
@@ -3247,7 +3249,6 @@ function mergeEnvironmentOptions(
32473249
32483250export async function getEnvironmentOptionsResolvers (
32493251 ctx : ReactRouterPluginContext ,
3250- buildManifest : BuildManifest ,
32513252 viteCommand : Vite . ResolvedConfig [ "command" ]
32523253) : Promise < EnvironmentOptionsResolvers > {
32533254 let { serverBuildFile, serverModuleFormat } = ctx . reactRouterConfig ;
@@ -3404,7 +3405,7 @@ export async function getEnvironmentOptionsResolvers(
34043405 } ) ,
34053406 } ;
34063407
3407- let serverBundleIds = getServerBundleIds ( buildManifest ) ;
3408+ let serverBundleIds = getServerBundleIds ( ctx . buildManifest ) ;
34083409 if ( serverBundleIds ) {
34093410 for ( let serverBundleId of serverBundleIds ) {
34103411 const environmentName = `${ SSR_BUNDLE_PREFIX } ${ serverBundleId } ` as const ;
@@ -3413,7 +3414,9 @@ export async function getEnvironmentOptionsResolvers(
34133414 getBaseServerOptions ( { viteUserConfig } ) ,
34143415 {
34153416 build : {
3416- outDir : getServerBuildDirectory ( ctx , { serverBundleId } ) ,
3417+ outDir : getServerBuildDirectory ( ctx . reactRouterConfig , {
3418+ serverBundleId,
3419+ } ) ,
34173420 } ,
34183421 } ,
34193422 // Ensure server bundle environments extend the user's SSR
@@ -3425,7 +3428,7 @@ export async function getEnvironmentOptionsResolvers(
34253428 environmentOptionsResolvers . ssr = ( { viteUserConfig } ) =>
34263429 mergeEnvironmentOptions ( getBaseServerOptions ( { viteUserConfig } ) , {
34273430 build : {
3428- outDir : getServerBuildDirectory ( ctx ) ,
3431+ outDir : getServerBuildDirectory ( ctx . reactRouterConfig ) ,
34293432 } ,
34303433 optimizeDeps :
34313434 ctx . reactRouterConfig . future . unstable_viteEnvironmentApi &&
@@ -3473,13 +3476,11 @@ export function resolveEnvironmentsOptions(
34733476
34743477async function getEnvironmentsOptions (
34753478 ctx : ReactRouterPluginContext ,
3476- buildManifest : BuildManifest ,
34773479 viteCommand : Vite . ResolvedConfig [ "command" ] ,
34783480 resolverOptions : Parameters < EnvironmentOptionsResolver > [ 0 ]
34793481) : Promise < Record < string , EnvironmentOptions > > {
34803482 let environmentOptionsResolvers = await getEnvironmentOptionsResolvers (
34813483 ctx ,
3482- buildManifest ,
34833484 viteCommand
34843485 ) ;
34853486 return resolveEnvironmentsOptions (
0 commit comments