I have an application made up of two parts:
- (
A) legacy application (AngularJs) with its own CSS classes. - (
B)divcontaining a completely new application (React).Bis built with webpack, postcss and Tailwind.
Can I make sure that B's Tailwind classes are not affected by A's stylesheets and vice versa, without any significant changes to the codebase?
Bad Solutions
I currently found two possible solutions that require big changes:
- I understand that Tailwind has a prefix config option, but I'd prefer not to prefix literally thousands of classes (especially considering that the prefix is longer than the class name itself).
- Use css-modules with local imports. I also don't like this approach, since:
- (i) I'm not sure how well that works with Tailwind, and
- (ii) even if it works, I would prefer not having to locally import from all kinds of places since it makes things a lot more verbose:
- e.g.
className="x" ... className="y"becomes:import s1 from 's1'; import s2 from 's2'; ... className="s1.x" ... className="s2.y"
- e.g.
More Relevant Approaches
I found two other relevant postcss plugins, but they fall short:
postcss-renameis great, but it does not fix the names in*.jsfiles.purgecsscan find classes based on their presence in*.jsfiles and then remove them from the output class list, but they do not allow renaming.
I specifically found that the most crucial missing feature seems to be the *.js file parser of purgecss. No other solution seems to have that quite yet.
Unsolved Problem
Or am I wrong? Is there any solution to apply a custom transform (e.g. rename) to all postcss classes, that are also applied to the output class names of HTML/JSX elements? Or is there any other way to have webpack automatically make my CSS classes non-conflicting for me?