Skip to content

Commit 212cc64

Browse files
Strip css rules belonging to usused styled components referenced by another (#351)
Co-authored-by: Robert Hurst <[email protected]>
1 parent ee94821 commit 212cc64

File tree

3 files changed

+241
-101
lines changed

3 files changed

+241
-101
lines changed

src/styleSheetSerializer.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,14 @@ const filterUnreferencedClassNames = (classNames, hashes) => classNames.filter(c
4949
const includesClassNames = (classNames, selectors) =>
5050
classNames.some(className => selectors.some(selector => selector.includes(className)));
5151

52+
const includesUnknownClassNames = (classNames, selectors) =>
53+
!selectors
54+
.flatMap(selector => selector.split(' '))
55+
.filter(chunk => chunk.includes('sc-'))
56+
.every(chunk => classNames.some(className => chunk.includes(className)))
57+
5258
const filterRules = classNames => rule =>
53-
rule.type === 'rule' && includesClassNames(classNames, rule.selectors) && rule.declarations.length;
59+
rule.type === 'rule' && !includesUnknownClassNames(classNames, rule.selectors) && includesClassNames(classNames, rule.selectors) && rule.declarations.length;
5460

5561
const getAtRules = (ast, filter) =>
5662
ast.stylesheet.rules

0 commit comments

Comments
 (0)