ssg is yet another static site generator
For a real world usage example see klingtnet/klingtnet.github.io.
Installation
If you've a Go distribution installed then just run:
$ go install github.com/klingtnet/static-site-generator/cmd/ssg@latest
Otherwise you can use one of the pre build binaries from the releases page.
Usage
First you need a configuration file, for all available options refer to example.config.json
.
Second, and most important, is content. The absolute minimum is a folder containing just an index.md
. The folder structure of a more complex page is shown below:
content/
βββ about-me.md
βββ articles
βΒ Β βββ bye.md
βΒ Β βββ hello.md
βββ index.md
βββ images
βββ photo.webp
βββ notes
βββ index.md
βββ something-else.md
static/
βββ assets
βββ base.css
For this example ssg
will generate:
- a navigation menu containing all root pages and first-level subdirectories with markdown files, i.e.
[home,about,articles,notes]
- a list page for the
articles
directory (since no index.md
was present)
- no list page for
notes
, instead index.md
is assumed to be the list page
images
is just copied
- contents from
static
directory will copied as is
output/
βββ about-me.html
βββ articles
βΒ Β βββ bye.html
βΒ Β βββ hello.html
βΒ Β βββ index.html
βββ index.html
βββ notes
Β βββ index.html
Β βββ something-else.html
βββ assets
βββ base.css
Anything besides the root index.md
is optional.
Development
Thanks to Go's excellent profiling support it is very easy to generate a CPU and memory profile. The following commands shows how to do this for a benchmark:
$ go test -cpuprofile cpu.prof -memprofile mem.prof -bench=BenchmarkGenerator ./generator/
Generated profiles can then be analyzed using pprof
, e.g. by running go tool pprof -http :9999 cpu.prof
.
Profiles should be analyzed for any performance optimization to verify if they bring a benefit or not.