Hugo Projektstruktur #
Ein typisches Hugo-Projekt hat folgende Verzeichnisstruktur:
meine-website/
├── archetypes/ # Vorlagen für neue Inhalte
├── assets/ # Dateien, die durch Hugo Pipes verarbeitet werden
├── content/ # Alle Inhalte als Markdown-Dateien
├── data/ # Konfigurationsdateien (YAML, JSON, TOML)
├── layouts/ # HTML-Templates
├── public/ # Generierte Website (HTML, CSS, JS)
├── static/ # Statische Dateien (CSS, JS, Bilder)
├── themes/ # Installierte Themes
└── config.toml # Hauptkonfigurationsdatei
Wichtige Verzeichnisse im Detail #
content/ #
Hier liegen alle Inhalte der Website als Markdown-Dateien. Die Verzeichnisstruktur bestimmt die URL-Struktur:
content/
├── _index.md # Homepage
├── blog/ # Blog-Sektion (URL: /blog/)
│ ├── _index.md # Blog-Übersichtsseite
│ └── post1.md # Einzelner Beitrag (URL: /blog/post1/)
└── about.md # Über-uns-Seite (URL: /about/)
layouts/ #
Enthält HTML-Templates, die bestimmen, wie der Inhalt dargestellt wird:
layouts/
├── _default/ # Standard-Templates
│ ├── baseof.html # Basis-Template für alle Seiten
│ ├── list.html # Template für Listen (z.B. Blog-Übersicht)
│ └── single.html # Template für einzelne Seiten
├── partials/ # Wiederverwendbare Template-Teile
│ ├── header.html
│ └── footer.html
└── shortcodes/ # Benutzerdefinierte Shortcodes
└── youtube.html
public/ #
Enthält die generierte statische Website. Dieses Verzeichnis wird automatisch von Hugo erstellt, wenn Sie den Befehl hugo ausführen (ohne server):
public/
├── index.html # Generierte Homepage
├── css/ # Generierte/kopierte CSS-Dateien
├── js/ # Generierte/kopierte JavaScript-Dateien
├── images/ # Kopierte Bilder
└── blog/ # Generierte Blog-Seiten
├── index.html # Blog-Übersichtsseite
└── post1/ # Einzelner Beitrag
└── index.html
Wichtig: Das public/-Verzeichnis enthält die fertige Website und sollte nicht manuell bearbeitet werden. Alle Änderungen sollten in den Quelldateien (content/, layouts/, etc.) vorgenommen werden. Hugo generiert dann automatisch die Dateien im public/-Verzeichnis neu.
static/ #
Enthält statische Dateien, die unverändert in die generierte Website kopiert werden:
static/
├── css/ # CSS-Dateien
├── js/ # JavaScript-Dateien
└── images/ # Bilder
themes/ #
Enthält installierte Themes. Ein Theme ist eine vollständige Vorlage für eine Hugo-Website:
themes/
└── mein-theme/ # Ein installiertes Theme
├── archetypes/
├── layouts/
├── static/
└── theme.toml # Theme-Konfiguration
Konfigurationsdatei #
Die Hauptkonfigurationsdatei (config.toml, config.yaml oder config.json) enthält alle Einstellungen für die Website:
# Grundlegende Einstellungen
baseURL = "https://example.com/"
languageCode = "de-de"
title = "Meine Website"
theme = "mein-theme"
# Weitere Einstellungen
[params]
description = "Eine tolle Website"
author = "Max Mustermann"
# Menü-Einstellungen
[menu]
[[menu.main]]
name = "Home"
url = "/"
weight = 1
[[menu.main]]
name = "Blog"
url = "/blog/"
weight = 2