Open
Description
Just idea for future and future discussions, maybe we can union and write full featured CSS parser + at-rules/values parser from scratch, I am afraid we can't rewrite postcss due some specific logic (and it will probably take longer), so union around CSS parser will be great for any JS tooling, we can open an issue for this
Shorty about situation:
- We have
postcss
and we have certain problems/issues, which, unfortunately, have not been resolved for a long time, like CSS compliance tokenizer and parser, selectors, at-rules and value parser - There is
csstree
parser, but it is pretty slow in solving problems - There is rust based parser like
lightningcss
andswc
, but unfortunately they are not quite extensible to support all syntaxes, but probably this is solvable, so it's just a discussion for now - There is
csstools
with own value and at-rules parser - We have
postcss-value-parser
,postcss-values-parser
andpostcss-selector-parser
, all of them have rather serious limitations and are not so actively maintained, although they are soling almost all current problems, but when a new syntax appears it is usually a problem, another big problem os postcss design, we need to reparse selectors, values and at-rules in each rule, it is very bad for perfomance (very) - We have to decide will we use JS based tooling or rust tooling (I support any decision, the main thing is to find a point of view that suits everyone)
- Combining efforts will allow us to more quickly solve problems and avoid duplication of work
- We need to think about AST and structure - we can be align with CSSOM or we can design own AST (yes, it will most likely be identical to CSSOM but with some additional nodes/properties) to be able to do deep analyze and fixes
- We need to think about non CSS compliance syntaxes (like sass/less/etc) and how to design it extendable, but, yeah, we can start with only CSS and improve it late, CSS by default is error tolerance, so everyhting what we can't parser will be
ListOfComponentValues
- Any other thoughts?
Feel free to feedback
I decided to start the problem here, as I think this is the most appropriate place, in the future we may move it or break it into more detailed parts.
Metadata
Metadata
Assignees
Labels
No labels
Activity