SAFE-Stack / SAFE-template

dotnet CLI template for SAFE project
MIT License
280 stars 87 forks source link

Replace FAKE with Fun.Build. #576

Open isaacabraham opened 7 months ago

isaacabraham commented 7 months ago

This (somewhat experimental) PR replaces FAKE with Fun.Build for the build project. The benefits of this PR are:

I also have used this opportunity to only run a "clean" on doing a Bundle - there's no need to do it on a Run as far as I can see.

You can still run the "default" pipeline with a standard dotnet run. Running other pipelines uses dotnet run -- -p <pipeline name>.

We do lose the fancy colouration for Client and Server output, however,

martinbryant commented 7 months ago
mattgallagher92 commented 7 months ago
  1. The code is much nicer (apart from the hideous "paralle" (sic.) keyword :joy:) - what happens for each target is so much clearer.

  2. Is the running of other targets being different syntax an issue and/or can we consider looking at PR to library to make it work as it is currently?

    @martinbryant you mean compared to FAKE? It's not a problem so long as it's clearly documented. The code comments make that clear, but updating the README would help too.

  3. For me the colours aren't a dealbreaker, and I'd consider releasing the template without colours but, as you say, a PR to Fun.Build would make sense.

mattgallagher92 commented 7 months ago

Reasons not to include this in SAFE v5.0.0 (but consider for v5.1.0):

Reasons to prefer FAKE anyway:

isaacabraham commented 7 months ago

@mattgallagher92 I agree - let's keep this PR going for post v5.0. FAKE - I'm unsure how many people are actively contributing to it nowadays TBH.

Remember that we can still use FAKE libraries - what we're essentially doing here is removing the FAKE target / composition bit and replacing with Fun.Build. As it turns out, we don't even need those FAKE libraries any longer - I just replaced the calls with standard .NET and it all works.

isaacabraham commented 7 months ago

@martinbryant I've fixed the test build now, this is now green.

martinbryant commented 7 months ago

Think we can look at closing #552 when completing this

mattgallagher92 commented 7 months ago

@martinbryant we should first decide if we are going to adopt this approach or not (see https://github.com/SAFE-Stack/SAFE-template/pull/576#issuecomment-1833501813).

If we do merge these changes in, I think that you're probably right. We'd just be swapping one Build.fs file for one Build directory, which is not really more tidy. If we were to have more than one F# file for the build project, it'd be worth considering the approach suggested in #552 again.

isaacabraham commented 5 months ago

Is this generally accepted as "the way forward"? If so, I'll resolve the conflicts and get this ready on Friday.

mattgallagher92 commented 5 months ago

I'm ambivalent. I don't feel any strong need to move away from FAKE, but the benefits you listed seem good. Moving back in future should be relatively easy if necessary.

Given that we're changing how programs like dotnet and npm are called, we should test on Windows, Mac and Linux before merging.