pintariching / railwind

Tailwind compiler rewritten in rust
MIT License
317 stars 9 forks source link

[feature request] `--minify` option #30

Open vermutely opened 1 year ago

vermutely commented 1 year ago

Add --minify option to railwind_css.

Tailwind CSS provides the following features Optimizing for Production

pintariching commented 1 year ago

Yeah that should be added also.

Does this option just remove spaces and newlines, or what does it actually do?

vermutely commented 1 year ago

Does this option just remove spaces and newlines

I think you're right about the basics!

Tailwind Play merges media queries.

minify

It would save even more space, but I don't know if it should be handled in this Issue. Would this merge be better managed in another Issue?

pintariching commented 1 year ago

I think this should be doable with the current implementation. First you need to iterate and group all the classes based on the railwind::modifiers::State. Then a new function needs to be added into railwind::class::ParsedClass that only generates the class selector without the state and wrap the resulting string in the state.

Also at the end, all the spaces and newlines should be stripped resulting in the minified string.

yamafaktory commented 1 year ago

Hello,

First of all thanks for this awesome project!

One solution for the minification might be to use https://docs.rs/lightningcss/1.0.0-alpha.39/lightningcss

vermutely commented 1 year ago

I will try to make a PR based on the information you provided! That minify library may be heavy with many dependencies, so I will first try to see if Regex can handle it.

pintariching commented 1 year ago

I don't think you need regex for this. You could use .replace(" ", "") to remove spaces and newlines. However I'm not sure what's faster, this or using regex.

vermutely commented 1 year ago

Since there are CSS commentouts in preflight.css, I was doubt if I need to remove the commentouts in my minify process. Would it be simpler to have a preflight.css that does not include the comments?

pintariching commented 1 year ago

Tailwind Play keeps these comments in so I think we should too and only remove then when minifying. In this case, you're right about using Regex to remove them.