While setup varies depending on your operating system, the steps are largely the same no matter what you're on.
Requirements:
- Go (1.11+)
- gcc
- Ultralight Libraries (
\.\bin\
inside the archive)
Start by cloning the repository and entering the example repository:
git clone https://github.com/ImVexed/muon
cd muon/examples/create-react-app
Before we can run our project we first need to build and then package all of our frontend assets into a single Go file. There are many static asset packagers you can choose from, however we reccomend fileb0x for ease of use and hot reloading.
Start by entering the frontend folder and building it:
cd public/
yarn
yarn build
Ensure you have fileb0x installed and in your $PATH
variable by running go install github.com/UnnoTed/fileb0x@latest
Now, back in the create-react-app
directory, package the assets by running either:
fileb0x b0x.yml
or
go generate
Which will tell fileb0x to use b0x.yml to pack our public/build
folder into a go file in webfiles/
From there we're good to go as long as we have gcc
in our path we can run
go build
Now that we have a binary we're almost done. If you try to run it now, or, if you ran
go run main.go
You will likely have ran into an error. This is because we are dynamically linking to Ultralight, meaning that it's libraries are resolved when the application is started. To fix this, you'll need the take the Ultralight Libraries (.dll
for Windows, .so
for Unix, .dylib
for Darwin) and put them in the same directory as your application.
Note for Linux users
- Linux by default only looks for shared objects at a specific system path, if you would preffer to load the shared objects from a different directory, simply set the
LD_LIBRARY_PATH
environment variable to the new directory containing the libraries. (.
being current directory)