@@ -157,6 +157,18 @@ impl ModuleOptions {
157
157
] )
158
158
} ) ;
159
159
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
+
160
172
let mut ts_preprocess = vec ! [ ] ;
161
173
let mut ecma_preprocess = vec ! [ ] ;
162
174
let mut postprocess = vec ! [ ] ;
@@ -490,9 +502,15 @@ impl ModuleOptions {
490
502
} ;
491
503
492
504
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( ) ,
496
514
] ) ,
497
515
vec ! [ ModuleRuleEffect :: SourceTransforms ( ResolvedVc :: cell( vec![
498
516
ResolvedVc :: upcast(
@@ -675,20 +693,7 @@ impl ModuleOptions {
675
693
RuleCondition :: ResourceBasePathGlob ( Glob :: new( key. clone( ) ) . await ?)
676
694
} ,
677
695
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( ) ,
692
697
] ) ,
693
698
vec ! [ ModuleRuleEffect :: SourceTransforms ( ResolvedVc :: cell( vec![
694
699
ResolvedVc :: upcast(
0 commit comments