railwind icon indicating copy to clipboard operation
railwind copied to clipboard

[feature request] `--minify` option

Open vermutely opened this issue 2 years ago • 8 comments

Add --minify option to railwind_css.

Tailwind CSS provides the following features Optimizing for Production

vermutely avatar Jan 07 '23 07:01 vermutely

Yeah that should be added also.

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

pintariching avatar Jan 07 '23 09:01 pintariching

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?

vermutely avatar Jan 07 '23 11:01 vermutely

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.

pintariching avatar Jan 07 '23 12:01 pintariching

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

yamafaktory avatar Jan 07 '23 15:01 yamafaktory

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.

vermutely avatar Jan 08 '23 05:01 vermutely

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.

pintariching avatar Jan 08 '23 09:01 pintariching

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?

vermutely avatar Jan 08 '23 10:01 vermutely

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.

pintariching avatar Jan 08 '23 10:01 pintariching