agave-generator
v0.3.9
Published
Minimal markdown to HTML static site generator
Readme

Minimal markdown to HTML for static sites with pretty URLs.
Written in ReasonML with native OCaml toolchain (opam + dune).
Install
Via npm
npm install -g agave-generatorBuild from source
Requires opam and OCaml 5.1+.
opam install . --deps-only -y
dune build
dune installLink locally for development
opam 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-generatorUse
mkdir 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 --helpThemes
Simply pass the -t argument and the theme name
agave -t arrakisAvailable themes:
- arrakis - Deep desert, spice orange and warm ochre on dark sand
- caladan - Ocean world, lush blues and greens
- giediprime - Black and white minimalist, stark industrial
- ix - 90s cyberdelia, neon on dark
- salusasecundus - Brutalist, raw concrete with heavy type
- spice - Psychedelic melange, molten oranges and gold shimmer
Example Site with Theme Previews
The example/ directory contains a demo site with preview pages for every built-in theme. To build it:
cd example
bash build-examples.shThis generates the main site and a themed preview page for each theme at public/themes/<theme>/. To view it locally:
agave -m markdown -p public -s
# Visit http://localhost:8080/ and click through the Theme GalleryFull Customization
If 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.
File structure
./markdown
└──base.html
└──index.md
└──another-page.md
└──topic.md
└──/topic
└──2019-1-1.md
└──2020-1-1.md
└──2021-1-1.mdresults 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.htmlDeploy your site
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.
Run your site locally
agave -s
# Server running at http://localhost:8080/You can also serve any existing directory without generating:
agave -p ./docs -sRelease
- Commit and tag:
git add -A && git commit -m "v0.2.0: description"
git tag v0.2.0
git push origin main --tagsGitHub Actions builds native binaries for
linux-x64,darwin-x64, anddarwin-arm64and attaches them to a GitHub Release.Publish to npm:
npm publishSupport
Want to support this project?
