Closed as not planned
Description
In version 6.1.2
, the following code outputs 1
, but in version 7.0.0
, it outputs 2
.
The reason is that selector.each
executes once more after insertAfter
.
This caused an issue for Vue when upgrading to postcss-selector-parser v7
minimal reproduction link: https://github.com/edison1105/postcss-selector-parser-bug
const parser = require('postcss-selector-parser');
const postcss = require('postcss')
let count = 0
const transform = selectors => {
selectors.each(selector => {
selector.each(n => {
count++
if (n.nodes) {
selectors.insertAfter(selector, n.nodes[0])
selectors.removeChild(selector)
}
})
})
}
function processRule(rule) {
rule.selector = parser(transform).processSync(rule.selector);
}
const plugin = {
postcssPlugin: 'postcss-plugin',
Rule(rule) {
processRule(rule)
},
}
postcss([plugin]).process(':global(.foo) { color: red; }').then(result => {
console.log('count:', count)
});
Metadata
Metadata
Assignees
Labels
No labels