RELEASE NOTES · Follow us on Twitter!
Fable is an F# to JavaScript compiler powered by Babel, designed to produce readable and standard code. Check the website for more information and if you find the project useful, don't forget to give us a star!
- Fable 1: Check the simple app template.
- Fable 2 (beta): Check the Fable 2 minimal sample and the blog post announcing Fable 2.
Make sure the following requirements are installed in your system:
- dotnet SDK 2.0 or higher
- node.js 6.11 or higher
- yarn
- Mono if you're on Linux or macOS.
Then you just need to type ./build.cmd
or ./build.sh
depending on your system to build a local copy of Fable and run the test suite. After that, if you want to quickly try changes to Fable source, please check src/tools/QuickTest.fs
.
Many of you are making really useful contributions that you also need for your own projects, however a new release may take several days. If you need the latest features the easiest way is to use dotnet run
that will automatically build and run Fable based on latest code. For this, in macOS/Linux you can write a fable-next
script as follows:
#!/bin/sh
dotnet --version
dotnet run -c Release -p /Users/alfonso/Fable/src/dotnet/Fable.Compiler $@ --force-pkgs
Note you need the full path to Fable.Compiler. The
--force-pkgs
option is used to force a new copy of package sources (including fable-core) in the hidden.fable
folder.
Make it executable (chmod +x fable-next
) and put it somewhere included in your PATH (e.g. in macOS /usr/local/bin
). Then in your projects, instead of running dotnet fable webpack-dev-server
, use fable-next webpack-dev-server
.
In Windows, you would write a fable-next.cmd
script as follows:
dotnet --version
dotnet run -c Release -p C:\Users\alfonso\Documents\Fable\src\dotnet\Fable.Compiler %* --force-pkgs
ATTENTION: Remember to build fable-core JS files beforehand. This can be done just by building the whole project (see "Building" above) or running the FableCoreJs
FAKE target (after this, if you edit one of the src/js/fablecore JS or TS files, you can run the FableCoreJsTypescriptOnly
which is faster).
Just by using Fable you're already contributing! You can help a lot the community by sharing examples and experiences in your personal blog and sending a PR to fable-awesome.
Send bug reports (ideally with minimal code to reproduce the problem) and feature requests to the GitHub repository. Issues with the label discussion
will be also added to ask the opinion of the community on different topics like roadmap, etc. For more immediate comments you can use the Gitter chat.
If you are up to contribute a fix or a feature yourself, you're more than welcome! Please send first an issue or a minimal Work In Progess PR so we can discuss the implementation details in advance. We're planning to add documentation for developers directly in the code, either as README files in each directory or as comments in the source. This is currently an ongoing effort.