File tree 2 files changed +27
-8
lines changed
2 files changed +27
-8
lines changed Original file line number Diff line number Diff line change @@ -7,16 +7,24 @@ const selectorPattern = /:global(?!\()/;
7
7
8
8
const globalifyRulePlugin : postcss . Transformer = ( root ) => {
9
9
root . walkRules ( selectorPattern , ( rule ) => {
10
- const modifiedSelectors = rule . selectors . map ( ( selector ) => {
11
- const [ beginning , ...rest ] = selector . split ( selectorPattern ) ;
10
+ const modifiedSelectors = rule . selectors
11
+ . filter ( ( selector ) => selector !== ':global' )
12
+ . map ( ( selector ) => {
13
+ const [ beginning , ...rest ] = selector . split ( selectorPattern ) ;
12
14
13
- if ( rest . length === 0 ) return ;
15
+ if ( rest . length === 0 ) return beginning ;
14
16
15
- return [ beginning , ...rest . map ( globalifySelector ) ]
16
- . map ( ( str ) => str . trim ( ) )
17
- . join ( ' ' )
18
- . trim ( ) ;
19
- } ) ;
17
+ return [ beginning , ...rest . map ( globalifySelector ) ]
18
+ . map ( ( str ) => str . trim ( ) )
19
+ . join ( ' ' )
20
+ . trim ( ) ;
21
+ } ) ;
22
+
23
+ if ( modifiedSelectors . length === 0 ) {
24
+ rule . remove ( ) ;
25
+
26
+ return ;
27
+ }
20
28
21
29
rule . replaceWith (
22
30
rule . clone ( {
Original file line number Diff line number Diff line change @@ -104,4 +104,15 @@ describe('transformer - globalRule', () => {
104
104
/ d i v ( : g l o b a l \( s p a n .c l s \) \{ \} | : g l o b a l \( s p a n \) : g l o b a l \( \. c l s \) \{ \} ) / ,
105
105
) ;
106
106
} ) ;
107
+
108
+ it ( 'remove rules with only :global its selector' , async ( ) => {
109
+ const template =
110
+ '<style>:global{/*comment*/}:global,div{/*comment*/}</style>' ;
111
+ const opts = autoProcess ( ) ;
112
+ const preprocessed = await preprocess ( template , opts ) ;
113
+
114
+ expect ( preprocessed . toString ( ) ) . toContain (
115
+ '<style>div{/*comment*/}</style>' ,
116
+ ) ;
117
+ } ) ;
107
118
} ) ;
You can’t perform that action at this time.
0 commit comments