PostCSS处理AST时如何准确匹配特定CSS规则?
我最近在用 PostCSS 写一个插件,想只处理某些特定的 CSS 规则,比如 class 名包含 btn- 的选择器。但发现用 rule.selector.includes('btn-') 会误匹配到像 .container-btn-special 这种嵌套写法,根本不是我要的目标。
试过正则匹配,但又怕漏掉各种空格和换行的情况。有没有更靠谱的方式能精准判断选择器是否“直接包含”某个类名?比如下面这段 HTML 里,我只想处理 .btn-primary,但不想碰 .card .btn-secondary 这种:
<button class="btn-primary">Primary</button>
<div class="card">
<button class="btn-secondary">Secondary</button>
</div>
是不是得用 PostCSS 的 AST 节点类型做更细粒度的解析?求指点!
这招能精准匹配 .btn-xxx 这种直接类名,不会误伤嵌套的。