@@ -1032,6 +1032,21 @@ export function createRpcClient(params) {
10321032 } ,
10331033 } ,
10341034 } ,
1035+ {
1036+ // keep track of build output for each environment build to generate
1037+ // assets manaifest and environment imports manifest.
1038+ // use `order: "post"` to include all chunks/assets
1039+ // generated by other plugins
1040+ // (e.g. `styles.css` generated by `vite:css-post` when `cssCodeSplit: false`).
1041+ // https://github.com/vitejs/vite/blob/a19003516951a3710aab0f2646d78c48b2e5d2ad/packages/vite/src/node/plugins/css.ts#L1040
1042+ name : 'rsc:virtual:vite-rsc/track-bundles' ,
1043+ generateBundle : {
1044+ order : 'post' ,
1045+ handler ( _options , bundle ) {
1046+ manager . bundles [ this . environment . name ] = bundle
1047+ } ,
1048+ } ,
1049+ } ,
10351050 {
10361051 name : 'rsc:virtual:vite-rsc/assets-manifest' ,
10371052 resolveId : {
@@ -1067,10 +1082,31 @@ export function createRpcClient(params) {
10671082 // client build
10681083 generateBundle ( _options , bundle ) {
10691084 // copy assets from rsc build to client build
1070- manager . bundles [ this . environment . name ] = bundle
1071-
10721085 if ( this . environment . name === 'client' ) {
10731086 const rscBundle = manager . bundles [ 'rsc' ] !
1087+
1088+ // when css code split is disabled, treat vite's single css bundle `style.css`
1089+ // as dependency of all server chunks
1090+ if ( ! manager . config . environments . rsc ! . build . cssCodeSplit ) {
1091+ let cssBundleName : string | undefined
1092+ for ( const output of Object . values ( rscBundle ) ) {
1093+ if (
1094+ output . type === 'asset' &&
1095+ output . names . includes ( 'style.css' )
1096+ ) {
1097+ cssBundleName = output . fileName
1098+ break
1099+ }
1100+ }
1101+ if ( cssBundleName ) {
1102+ for ( const output of Object . values ( rscBundle ) ) {
1103+ if ( output . type === 'chunk' ) {
1104+ output . viteMetadata ! . importedCss . add ( cssBundleName )
1105+ }
1106+ }
1107+ }
1108+ }
1109+
10741110 const assets = new Set (
10751111 Object . values ( rscBundle ) . flatMap ( ( output ) =>
10761112 output . type === 'chunk'
@@ -1092,7 +1128,7 @@ export function createRpcClient(params) {
10921128 }
10931129
10941130 const serverResources : Record < string , AssetDeps > = { }
1095- const rscAssetDeps = collectAssetDeps ( manager . bundles [ 'rsc' ] ! )
1131+ const rscAssetDeps = collectAssetDeps ( rscBundle )
10961132 for ( const [ id , meta ] of Object . entries (
10971133 manager . serverResourcesMetaMap ,
10981134 ) ) {
0 commit comments