@@ -157,6 +157,18 @@ impl ModuleOptions {
157157 ] )
158158 } ) ;
159159
160+ // For React Client References, the CSS Module "facade" module lives in the parent (server)
161+ // module context, but the facade's references should be transitioned to the client (and
162+ // only then be processed with Webpack/PostCSS).
163+ let module_css_external_transform_condition = RuleCondition :: Any ( vec ! [
164+ // If module css, then only when (Inner or Analyze or Compose)
165+ // <=> (not (module css)) or (Inner or Analyzer or Compose)
166+ RuleCondition :: not( module_css_condition. clone( ) ) ,
167+ RuleCondition :: ReferenceType ( ReferenceType :: Css ( CssReferenceSubType :: Inner ) ) ,
168+ RuleCondition :: ReferenceType ( ReferenceType :: Css ( CssReferenceSubType :: Analyze ) ) ,
169+ RuleCondition :: ReferenceType ( ReferenceType :: Css ( CssReferenceSubType :: Compose ) ) ,
170+ ] ) ;
171+
160172 let mut ts_preprocess = vec ! [ ] ;
161173 let mut ecma_preprocess = vec ! [ ] ;
162174 let mut postprocess = vec ! [ ] ;
@@ -490,9 +502,15 @@ impl ModuleOptions {
490502 } ;
491503
492504 rules. push ( ModuleRule :: new (
493- RuleCondition :: Any ( vec ! [
494- RuleCondition :: ResourcePathEndsWith ( ".css" . to_string( ) ) ,
495- RuleCondition :: ContentTypeStartsWith ( "text/css" . to_string( ) ) ,
505+ RuleCondition :: All ( vec ! [
506+ RuleCondition :: All ( vec![
507+ RuleCondition :: Any ( vec![
508+ RuleCondition :: ResourcePathEndsWith ( ".css" . to_string( ) ) ,
509+ RuleCondition :: ContentTypeStartsWith ( "text/css" . to_string( ) ) ,
510+ ] ) ,
511+ RuleCondition :: not( module_css_condition. clone( ) ) ,
512+ ] ) ,
513+ module_css_external_transform_condition. clone( ) ,
496514 ] ) ,
497515 vec ! [ ModuleRuleEffect :: SourceTransforms ( ResolvedVc :: cell( vec![
498516 ResolvedVc :: upcast(
@@ -675,20 +693,7 @@ impl ModuleOptions {
675693 RuleCondition :: ResourceBasePathGlob ( Glob :: new( key. clone( ) ) . await ?)
676694 } ,
677695 RuleCondition :: not( RuleCondition :: ResourceIsVirtualSource ) ,
678- RuleCondition :: Any ( vec![
679- // if module css, then only when internal or analyze
680- // <=> (not (module css)) or (Inner or Analyzer or Compose)
681- RuleCondition :: not( module_css_condition. clone( ) ) ,
682- RuleCondition :: ReferenceType ( ReferenceType :: Css (
683- CssReferenceSubType :: Inner ,
684- ) ) ,
685- RuleCondition :: ReferenceType ( ReferenceType :: Css (
686- CssReferenceSubType :: Analyze ,
687- ) ) ,
688- RuleCondition :: ReferenceType ( ReferenceType :: Css (
689- CssReferenceSubType :: Compose ,
690- ) ) ,
691- ] ) ,
696+ module_css_external_transform_condition. clone( ) ,
692697 ] ) ,
693698 vec ! [ ModuleRuleEffect :: SourceTransforms ( ResolvedVc :: cell( vec![
694699 ResolvedVc :: upcast(
0 commit comments