@@ -9,6 +9,7 @@ import * as Typegen from "../../typegen";
99import { readFileSync } from "fs" ;
1010import { readFile } from "fs/promises" ;
1111import path , { join , dirname } from "pathe" ;
12+ import invariant from "../../invariant" ;
1213import {
1314 type ConfigLoader ,
1415 type ResolvedReactRouterConfig ,
@@ -32,6 +33,7 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] {
3233 let configLoader : ConfigLoader ;
3334 let typegenWatcherPromise : Promise < Typegen . Watcher > | undefined ;
3435 let viteCommand : Vite . ConfigEnv [ "command" ] ;
36+ let resolvedViteConfig : Vite . ResolvedConfig ;
3537 let routeIdByFile : Map < string , string > | undefined ;
3638 let logger : Vite . Logger ;
3739
@@ -231,6 +233,9 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] {
231233 } ,
232234 } ;
233235 } ,
236+ configResolved ( viteConfig ) {
237+ resolvedViteConfig = viteConfig ;
238+ } ,
234239 async configureServer ( viteDevServer ) {
235240 configLoader . onChange (
236241 async ( {
@@ -499,6 +504,30 @@ export function reactRouterRSCVitePlugin(): Vite.PluginOption[] {
499504 return modules ;
500505 } ,
501506 } ,
507+ {
508+ name : "react-router/rsc/virtual-react-router-serve-config" ,
509+ resolveId ( id ) {
510+ if ( id === virtual . reactRouterServeConfig . id ) {
511+ return virtual . reactRouterServeConfig . resolvedId ;
512+ }
513+ } ,
514+ load ( id ) {
515+ if ( id === virtual . reactRouterServeConfig . resolvedId ) {
516+ const rscOutDir = resolvedViteConfig . environments . rsc ?. build ?. outDir ;
517+ invariant ( rscOutDir , "RSC build directory config not found" ) ;
518+ const clientOutDir =
519+ resolvedViteConfig . environments . client ?. build ?. outDir ;
520+ invariant ( clientOutDir , "Client build directory config not found" ) ;
521+ const assetsBuildDirectory = Path . relative ( rscOutDir , clientOutDir ) ;
522+ const publicPath = resolvedViteConfig . base ;
523+
524+ return `export default ${ JSON . stringify ( {
525+ assetsBuildDirectory,
526+ publicPath,
527+ } ) } ;`;
528+ }
529+ } ,
530+ } ,
502531 validatePluginOrder ( ) ,
503532 warnOnClientSourceMaps ( ) ,
504533 ] ;
@@ -510,6 +539,7 @@ const virtual = {
510539 hmrRuntime : create ( "unstable_rsc/runtime" ) ,
511540 basename : create ( "unstable_rsc/basename" ) ,
512541 rscEntry : create ( "unstable_rsc/rsc-entry" ) ,
542+ reactRouterServeConfig : create ( "unstable_rsc/react-router-serve-config" ) ,
513543} ;
514544
515545function invalidateVirtualModules ( viteDevServer : Vite . ViteDevServer ) {
0 commit comments