Skip to content
Static site generators

Static site generators

Pandoc-based

  • Quarto: an open-source scientific and technical publishing system built on Pandoc.

R-based

  • Bookdown : Write HTML, PDF, ePub, and Kindle books with R Markdown. Written in R.

Ruby-based

Rust-based

Python-based

  • Jupyter book : Building beautiful, publication-quality books and documents from jupyter notebooks.
  • Nikola : Static Site Generator written in Python.

Julia-based

JS-based

  • 11ty : a simple SSG written in JavaScript.
  • Publii : A content management system (CMS) for creating static websites fast and hassle-free, even for beginners.

Docsify

Docsify renders Markdown files to HTML on-the-fly. Technically docsify is a single page application (SPA) rather than a static site generator (SSG).

Hexo

Hexo is a fast, simple & powerful blog framework powered by Node.js.

A list of Hexo themes

Hugo

Hugo is the world’s fastest framework for building websites, written in Go.

Setup Hugo

Ubuntu

Download and install the hugo deb file from the release page.

Windows

chocolatey:

choco install hugo-extended

Go compiler is needed for Hugo modules

choco install golang

GitHub actions

Use https://github.com/peaceiris/actions-hugo

name: Deploy Hugo site to Pages

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  workflow_dispatch:

# Allow only one concurrent deployment
concurrency:
  group: pages-${{ github.ref }}
  cancel-in-progress: true

jobs:
  # Build job
  build:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v4
        with:
          submodules: true # Fetch Hugo themes (true OR recursive)
          fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod
      - name: Setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: 'latest'
          extended: true
      - name: Caching Hugo Modules
        uses: actions/cache@v4
        with:
          path: ~/.cache/hugo_cache
          key: ${{ runner.os }}-hugomod-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-hugomod-
      - name: Setup Pages
        id: pages
        uses: actions/configure-pages@v3
      - name: Build
        run: hugo --gc --minify --baseURL ${{ steps.pages.outputs.base_url }}
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v2
        with:
          path: ./public

  # Deployment job
  deploy:
    needs: build
    if: github.ref == 'refs/heads/main'
    # Grant GITHUB_TOKEN the permissions required to make a Pages deployment
    permissions:
      pages: write # to deploy to Pages
      id-token: write # to verify the deployment originates from an appropriate source
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v2

Docker

klakegg/hugo docker image.

FROM klakegg/hugo

Hugo themes

A list of Hugo themes I found useful

Documentation

Blog

Last updated on