Skip to content

Commit f011b74

Browse files
illrightkaisermann
authored andcommitted
fix: do not break when :global is the only selector
1 parent e5df3a1 commit f011b74

File tree

2 files changed

+27
-8
lines changed

2 files changed

+27
-8
lines changed

Diff for: src/transformers/globalRule.ts

+16-8
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,24 @@ const selectorPattern = /:global(?!\()/;
77

88
const globalifyRulePlugin: postcss.Transformer = (root) => {
99
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);
1214

13-
if (rest.length === 0) return;
15+
if (rest.length === 0) return beginning;
1416

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+
}
2028

2129
rule.replaceWith(
2230
rule.clone({

Diff for: test/transformers/globalRule.test.ts

+11
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,15 @@ describe('transformer - globalRule', () => {
104104
/div (:global\(span .cls\)\{\}|:global\(span\) :global\(\.cls\)\{\})/,
105105
);
106106
});
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+
});
107118
});

0 commit comments

Comments
 (0)