-
Notifications
You must be signed in to change notification settings - Fork 53
Closed as not planned
Closed as not planned
Copy link
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