UNPKG

@efficientcss/stylelint-config-ecss

Version:

Linting rules for EfficientCSS

43 lines (34 loc) 1.08 kB
import stylelint from 'stylelint'; import printUrl from '../lib/printUrl.js'; const { createPlugin, utils: { report, ruleMessages } } = stylelint; const ruleName = 'ecss/tag-scoped-class'; const messages = ruleMessages(ruleName, { expected: "Don't scope class/attribute selectors to some tags only.", }); const meta = { url: printUrl('tag-scoped-class') } const ruleFunction = (primaryOption, secondaryOption, context) => { return (postcssRoot, postcssResult) => { const tagScopedClassRegex = /^(?![.])(nav|div|header|footer|section|aside|article)( |>| > )+([.]|\\[[a-z-_]*=?"?).*("?\\])?$/; postcssRoot.walkRules((rule) => { // Check if the selector contains a class or attribute scoped by a tag if (tagScopedClassRegex.test(rule.selector)) { report({ message: messages.expected, messageArgs: [rule.selector], node: rule, result: postcssResult, ruleName, }); } }); }; }; ruleFunction.ruleName = ruleName; ruleFunction.messages = messages; ruleFunction.meta = meta; export default createPlugin(ruleName, ruleFunction);