Skip to content

🍯 Sweet simple static site generator

License

Notifications You must be signed in to change notification settings

jottenlips/agave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

111 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Agave Logo

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-generator

Build from source

Requires opam and OCaml 5.1+.

opam install . --deps-only -y
dune build
dune install

Link locally for development

opam install . --deps-only -y
dune build
cp _build/default/bin/Agave.exe bin/agave-native
npm link --ignore-scripts

Now agave is available globally. To unlink:

npm unlink -g agave-generator

Use

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 ./public

For the full list of options run help.

agave --help

Themes

Simply pass the -t argument and the theme name

agave -t desert

Full 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 again

Here is an example of using custom base.html.

Blog

Repo

File structure

./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

Deploy your site

Github Pages

agave --markdown myblog --public docs
git add --all
git commit -m"deploy"
git push

Setup 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 -s

Release

  1. Commit and tag:
git add -A && git commit -m "v0.2.0: description"
git tag v0.2.0
git push origin main --tags
  1. GitHub Actions builds native binaries for linux-x64, darwin-x64, and darwin-arm64 and attaches them to a GitHub Release.

  2. Publish to npm:

npm publish

Support

Want to support this project?

Contributor Covenant