Fable install instructions: https://fable.io/docs/getting-started/your-first-fable-project.html

#1. new console app
dotnet new console -lang F#

#2. install fable
dotnet new tool-manifest
dotnet tool install fable

#3. add fable core and transpile to JS
dotnet add package Fable.Core
dotnet fable

Javascript install: https://fable.io/docs/getting-started/javascript.html#browser

#1. setup npm
npm init -y

#2. Add vite
npm i -D vite

#3. add vite.config.ts
# done manually

#4. add index.html
# done manually

#5. Run vite and check it works
npx vite

#6. add dom package
dotnet add package Fable.Browser.Dom

#7. change contents of Program.fs
# done manually

#8. confirm all works ok by running fable in watch mode
dotnet fable watch --verbose --run npx vite

Perfect fifth installation: https://github.com/mark-gerarts/perfect-fifth?tab=readme-ov-file#installation

#1. Add the package
dotnet add package PerfectFifth --prerelease

#2. Starter templates fixes - nothing to do, no longer needed, fable is .net8 already

#3. Add p5js dependency - note this installed latest 1.9.3, so manually changed the package.json back to 1.6.0
npm i --save p5@^1.6.0

#4. Add example display code from https://github.com/mark-gerarts/perfect-fifth?tab=readme-ov-file#display

On new clone, run the following to make sure all is setup correctly:

# Install node_modules from package.json and package-lock.json
npm install

# Restore tools from .config/dotnet-tools.json
dotnet tool restore

# Restore dotnet build
dotnet restore

# Test compile to JS, creates the fable_modules folder
dotnet fable

# Test vite is working, listens on http://localhost:5173/
npx vite

Then run in watch mode: dotnet fable watch --verbose --run npx vite