leptos-rs / cargo-leptos

Build tool for Leptos (Rust)
MIT License
315 stars 88 forks source link

Integrate Tailwind #18

Closed akesson closed 1 year ago

akesson commented 1 year ago

Based on these instructions.

Basically, install binary and run on CSS change.

pepperoni21 commented 1 year ago

I think it's already possible to use Tailwind with Leptos, but I thought it would be great to have a kind of --tailwind parameter to the cargo leptos watch command to automatically run tailwindcss to watch changes without having to use two terminals. If you think it would be a good feature to add I can start working on a PR.

akesson commented 1 year ago

Sure. I think it would be better to add it to the config:

[package.metadata.leptos]
tailwind = true

So that the LibPackage struct ends up with a tailwind: bool field.

A good second step would be to add support for automatic download and installation of the tailwind binary in the Exe enum.

The signalling part is a bit complex, but if you want I can do that. Just give me a shout once the above is done.

ManitVig commented 1 year ago

I am thinking about working on this issue. can you tell me where can I check if classes have been updates in view! macros, because I think tailwind build command have to be called everytime a class attribute is updated. Having tailwind watch command running would probably interfere with cargo rebuild as it does when it tried it by just running both tailwind watch and cargo leptos watch in two terminal instances. I was getting the following error everytime I tried using a class which wasn't already cached:-

Blocking waiting for file lock on package cache

or am I misinterpreting.

I am pretty new to open source so please don't mind that I am not well versed with the open source way of doing things.

ManitVig commented 1 year ago

I have already made the neccessary changes required for adding tailwind:bool argument to the conifig file and updating the Exe enum as well as the ExeMeta struct in a local branch. Shall I publish it?

akesson commented 1 year ago

There's a rather complex signalling system in place. See https://github.com/leptos-rs/cargo-leptos/blob/main/src/readme.md but note that it is mainly for getting an approximate understanding of it.

Let's start with what you've already done and then I'll point you to the next steps. Could you do a PR to the tailwind-support branch? Like that, we can take it step-by-step there.

ManitVig commented 1 year ago

Created the pull request #63

ManitVig commented 1 year ago

@akesson Do you think after merging changes from #62, tailwind can be integrated into the watch process like I mention here:-

https://github.com/leptos-rs/cargo-leptos/issues/62#issuecomment-1405975986

akesson commented 1 year ago

Yes, you are definitely heading the right way. Better to use tailwind build only because cargo-leptos is already doing the fs watch. I think a good next step would be to integrate tailwind into the cargo build step with an implementation in src/compile/tailwind.rs. But let's finish the PR first.