PostCSS Stringifier处理动态类名时样式输出不完整怎么办?
我在React项目里用PostCSS自定义了一个stringifier插件,想把动态生成的类名统一加上前缀。但发现处理后的CSS某些属性直接被去掉了,比如这个按钮组件的padding样式完全没输出:
function Button({ color }) {
return (
<button className={btn ${color}-theme}>
Click me
</button>
)
}
我检查过插件代码,发现当遇到类名包含连字符(比如primary-theme)时,stringifier的node.toString()会直接忽略对应的样式规则。试过调整walkRules参数顺序也不行,控制台没有报错但样式就是不对…
node.selector.includes()之类的简单字符串匹配去处理选择器。遇到动态类名带连字符时,应该用postcss-selector-parser正确解析选择器,否则会误删规则。