analyze-css
Version:
CSS selectors complexity and performance analyzer
32 lines (27 loc) • 765 B
JavaScript
var COMPLEX_SELECTOR_THRESHOLD = 3;
/**
* @param { import("../lib/css-analyzer") } analyzer
*/
function rule(analyzer) {
analyzer.setMetric("complexSelectors");
// #foo .bar ul li a
analyzer.on("selector", function (rule, selector, expressions) {
const filteredExpr = expressions.filter((item) => {
return ![
"adjacent",
"parent",
"child",
"descendant",
"sibling",
"column-combinator",
].includes(item.type);
});
if (filteredExpr.length > COMPLEX_SELECTOR_THRESHOLD) {
analyzer.incrMetric("complexSelectors");
analyzer.addOffender("complexSelectors", selector);
}
});
}
rule.description = "Reports too complex CSS selectors";
module.exports = rule;
;