Minimal markdown to HTML for static sites with pretty URLs.
Written in ReasonML with native OCaml toolchain (opam + dune).
npm install -g agave-generator
Requires opam and OCaml 5.1+.
opam install . --deps-only -y
dune build
dune installopam install . --deps-only -y
dune build
cp _build/default/bin/Agave.exe bin/agave-native
npm link --ignore-scriptsNow agave is available globally. To unlink:
npm unlink -g agave-generatormkdir blog
cd blog
mkdir markdown
touch markdown/index.md # home page
touch markdown/first-post.md # /first-post/ route
agave # reads all your readmes in ./markdown and outputs them to ./publicFor the full list of options run help.
agave --helpSimply pass the -t argument and the theme name
agave -t desertIf you didn't find a theme for you you can add any base HTML and CSS you would like.
base.html will wrap every generated page.
base.html must contain <!-- MARKDOWN --> where you would like your content placed.
If you have a styles.css file in the markdown folder, it will be copied to the deployment folder.
touch markdown/base.html
touch markdown/styles.css
echo "<html><!-- MARKDOWN --></html>" > markdown/base.html
agave # run the generator againHere is an example of using custom base.html.
./markdown
βββbase.html
βββindex.md
βββanother-page.md
βββtopic.md
βββ/topic
βββ2019-1-1.md
βββ2020-1-1.md
βββ2021-1-1.md
results in
./public
βββindex.html
βββanother-page/index.html
βββ/topic
βββindex.html
βββ2019-1-1/index.html
βββ2020-1-1/index.html
βββ2021-1-1/index.html
Github Pages
agave --markdown myblog --public docs
git add --all
git commit -m"deploy"
git pushSetup your repo to look at the docs folder on your main branch in the repo settings.
agave -s
# Server running at http://localhost:8080/You can also serve any existing directory without generating:
agave -p ./docs -s- Commit and tag:
git add -A && git commit -m "v0.2.0: description"
git tag v0.2.0
git push origin main --tags-
GitHub Actions builds native binaries for
linux-x64,darwin-x64, anddarwin-arm64and attaches them to a GitHub Release. -
Publish to npm:
npm publishWant to support this project?
