I have been writing and maintaining my website for more than five years! Asciidoctor was a nice way to bootstrap quick and good-looking web pages in a matter of minutes. However, my desire for quirky designs and math support, made the issue of bulding it annoyingly complicated. I just want a nice website that can do anything.
It is my honor and pleasure to introduce you to Darkness. The most noble static website generator. To keep the long story short, check out my current website, which is dutifully built by Darkness.
She supports all org mode (and markdown!) formatting, native flex galleries (with automatic blurry previews generations and lazy loading!), full math support, social embeds (youtube, spotify, etc.), drop caps (they look fancy), automatic code highlighting, and much more 😈
Also, did I tell you it's super fast?
sandyuraz:source λ darkness build
Processed 128 files in 112 ms
farewell
Each page takes <1ms to process on my 2020 M1 MacBook Pro. With all the IO time included as well. Heavily optimized with komi pools, hunting heap moves, and heavy profiling.
You can play with best performance by tuning parallelization parameters with -workers N
,
and other flags you can use by calling darkness -help
!
Here is a benchmark with hyperfine
on the same config as above,
sandyuraz:source λ hyperfine "darkness build"
Benchmark 1: darkness build
Time (mean ± σ): 112.3 ms ± 6.6 ms [User: 413.7 ms, System: 92.3 ms]
Range (min … max): 103.1 ms … 124.3 ms 26 runs
It's simple! If you have go1.22 installed, you can install it through go
tool with
go install -v github.com/thecsw/darkness/v3@v3.0.2
Or you can also grab pre-built binaries from the releases page.
Darkness and I provide you with a template website that you can get a copy of
through the binary! Run the below, which will create a new directory, for example,
here called ishmael
,
darkness new ishmael
Go and run the website locally with darkness serve
and explore Darkness in action!
Here is the web version of ishmael to browse around!
Okay, go, go! I'll see you later 😘