Notities over webtechnolgie, en andere tips, trucs en lifehacks uit het dagelijkse leven.

Bash Static Site Generator (BSSG)

Gepubliceerd op: door Christophe

Bijgewerkt op: • 3 min read

Door de jaren heen heb ik verschillende pogingen ondernomen om een blog te starten. Heb heel veel CMS systemen getest, zowel met database als flatfile (zonder database), alsook Static Site Generators zoals Jekyll en 11ty. Ik was op zoek naar een systeem die eenvoudig, flexibel en out-of-the-box werkt, dus zonder veel gedoe.

Zo heb ik gisteren kennis gemaakt met de Bash Static Site Generator (BSSG) ontwikkeld door Stefano Marinelli.

BSSG is heel doordacht opgezet. Veel cms- en andere content systemen verwachten dat je al heel veel kennis hebt als je nieuwe software wil testen, maar bij BSSG had ik dit gevoel niet. De documentatie is uitgebreid, duidelijk en voorzien van voorbeeld-code. De core van BSSG is ook gescheiden van je website project, dat maakt het eenvoudiger je website te beheren.

Bij het aanmaken van een website wordt een config.sh.local aangemaakt in de directory van je website, daar kun je heel wat variabelen instellen, zoals de Titel, Omschrijving, url, email,... maar ook hoe je website 'technisch' opgemaakt moet worden, oa hoeveel blogberichten per pagina of op welke poort de webserver moet draaien. De BSSG is ook voorzien van 60 themes waaruit je kan kiezen. Wens je toch het uiterlijk van je website wijzigen, kopieer dan de header.html en footer.html en voeg deze toe aan de directory /templates in je website. Voeg ook volgende regel toe aan je config.sh.local van je website:

TEMPLATES_DIR="dir/van/je/website/templates"

Hieronder vind je enkele commando's hoe BSSG werkt:

  • Initialisatie van een nieuwe website:
./bssg.sh init /dir/naar/je/website
  • Nieuw bericht maken:
./bssg.sh post naam-van-je-bericht
  • nieuwe pagina maken:
./bssg.sh page naam-van-je-pagina
  • nieuw concept bericht/pagina maken:
./bssg.sh post -d naam-van-je-bericht
./bssg.sh page -d naam-van-je-pagina
  • Een website builden:
./bssg.sh build
  • De ingebouwde server starten:
./bssg.sh server

Standaard is de website bereikbaar op http://localhost:8000

  • Toont een lijst van alle berichten:
./bggs.sh list
  • Toont een lijst van alle tags:
./bggs.sh tags

De focus van BSSG ligt vooral voor het bouwen van blog-websites, maar aan de hand van de statische pagina's kun je er ook perfect een website voor een de bakkerij om de hoek mee bouwen. Wat je hiervoor moet doen is een statische pagina maken en opslaan als index.md en in de frontmatter plaats je slug: index. Ipv dat je nu een lijst van berichten ziet op de homepage, zie je de nieuw aangemaakte index-pagina. Aanmaken van html-pagina's is ook mogelijk, dit doe je door volgende te typen:

./bssg.sh post -html je-bericht

of

./bssg.sh page -html je-statische-pagina

BSSG beschikt ook over een visuele markdown editor (bssg-editor.html), die je eventueel kan integreren in je website. Deze editor plaats je in de /static directory van je website, en hernoem je eventueel naar een eenvoudigere naam bijvoorbeeld editor.html, deze is dan bereikbaar via: https://website.com/editor.html , handig indien je niet met command tools wil werken en vooral ook voor onderweg. Opgelet: met de visuele editor kun je markdown pagina's opmaken, opslaan en importeren/exporteren, maar wordt niet automatisch toegevoegd aan je website. Nadien moet je het aangemaakte md-bestand in je /src map plaatsen, en website rebuilden.

Niet onbelangrijk is de mogelijkheid om heel eenvoudig backups te maken van je website door het typen van volgend commando:

./bssg.sh backup

De backups worden bewaard in de BGGS directory in de map /backups. Wil je een backup terug plaatsen:

./bssg.sh restore backup-bestand

Als je niet 'vies' bent om met command tools snel en eenvoudig een statische website op te zetten, dan kan ik je BSSG aanraden.

Hier vind je de documentatie over BSSG en de nieuwe releases. De maker, Stefano Marinelli, van dit mooie stukje software heeft nog een leuk artikel geschreven over zijn overstap van CMS systemen naar een Static Site Generator.