analyze-css
Version:
CSS selectors complexity and performance analyzer
33 lines (27 loc) • 911 B
JavaScript
/**
* @param { import("../lib/css-analyzer") } analyzer
*/
function rule(analyzer) {
analyzer.setMetric("qualifiedSelectors");
// @see https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS
analyzer.on("selector", (_, selector, expressions) => {
var hasId = expressions.some((expr) => expr.name === "id"),
hasTag = expressions.some((expr) => expr.type === "tag"),
hasClass = expressions.some((expr) => expr.name === "class");
// console.log(selector, expressions, {hasId, hasTag, hasClass});
if (
// tag#id
(hasId && hasTag) ||
// .class#id
(hasId && hasClass) ||
// tag.class
(hasClass && hasTag)
) {
analyzer.incrMetric("qualifiedSelectors");
analyzer.addOffender("qualifiedSelectors", selector);
}
});
}
rule.description = "Reports qualified selectors";
module.exports = rule;
;