Templates for non-JS languages
With Fable 4 supporting more languages, I thought it would be good to start a conversation around adding templates for these languages to help users get up and running with them. I am happy to help out with this, but there seem to be some topics that need a consensus on how they should be approached, as the method used in the templates will likely become the standard method used in most projects. Ideally these approaches should be driven by the standard methods in the target languages and how Fable would fit into the target ecosystem.
Below is a list of things that are provided by existing JS templates that I think should be retained for other target languages and some potential approaches.
- Dependency management
- JS: Current templates use npm
- Python: pip (built-in), pipenv, poetry
- Rust: cargo (built-in)
- Build/Deployment system
- JS: Current templates use node and webpack
- Python: poetry
- Rust: cargo (built-in)
- Tests
- JS: Not present in this repo, but the Feliz template uses Fable.Mocha for tests in both .NET and JS ecosystems
- Python: unittest (built-in), pytest, nose
- Rust: cargo (built-in), cargo-nextest
- Target use-case:
- JS: current templates in this repo only targets web app development
- Python: standard (locally interpreted), web (django/flask)
- Rust: standard (native executables), WebAssembly (I doubt this would be a big enough use-case to justify a template given the F# -> wasm options that already exist)
This is not supposed to be the be-all and end-all of the options and decisions to be made for these templates, but more so a jumping off point to get the discussion rolling. Please comment with more things that you think should be considered for these templates or your thoughts on the options presented here!
Rust likely has less to decide about since Cargo is provided with a Rust installation, is the standard tool, and does everything that the template would need.
Another question is if all of the templates should continue to live in a single repo as they should probably be distributed as different nuget packages.
Can you lighten me up?
(I doubt this would be a big enough use-case to justify a template given the F# -> wasm options that already exist)
So far I understand, is the only solution to get to wasm with Balero?
Isnt this quite limiting, considering it's a web framework?
Or am I missing something here?