Add some fake versions setup

This commit is contained in:
Bjørn Erik Pedersen 2025-05-15 13:20:04 +02:00
parent 982b863c3a
commit cec0117a0b
No known key found for this signature in database
11 changed files with 773 additions and 169 deletions

View File

@ -1,4 +1,4 @@
---
title: The world's fastest framework for building websites
title: The world's fastest framework for building websites!
description: Hugo is one of the most popular open-source static site generators. With its amazing speed and flexibility, Hugo makes building websites fun again.
---

View File

@ -0,0 +1,13 @@
---
_comment: Do not remove front matter.
---
> [!note] Hugo-modular er Go-modular
> Du treng [Go] versjon 1.18 eller nyare og [Git] for å bruke Hugo-modular. For eldre nettsider på Netlify, må du sørgje for at miljøvariabelen `GO_VERSION` er sett til `1.18` eller høgare.
>
> Ressursar om Go-modular:
> - [go.dev/wiki/Modules](https://go.dev/wiki/Modules)
> - [blog.golang.org/using-go-modules](https://go.dev/blog/using-go-modules)
[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
[Go]: https://go.dev/doc/install

5
content/nn/_index.md Normal file
View File

@ -0,0 +1,5 @@
---
title: Verdas raskaste rammeverk for å byggja nettsider!
description: Hugo er ein av dei mest populære opne-kjeldekode statiske nettstadgeneratorane. Med si utruleg fart og fleksibilitet, gjer Hugo det kjekt å byggja nettsider igjen.
languages: [nn]
---

View File

@ -0,0 +1,284 @@
---
title: Introduksjon
description: Konfigurer nettstaden din ved hjelp av filer, mapper og miljøvariablar.
categories: []
keywords: []
weight: 10
---
## Fornuftige standardverdiar
Hugo tilbyr mange konfigurasjonsalternativ, men standardverdiane er ofte tilstrekkelege. Ein ny nettstad krev berre desse innstillingane:
{{< code-toggle file=hugo >}}
baseURL = 'https://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
{{< /code-toggle >}}
Definer berre innstillingar som avvik frå standardverdiane. Ei mindre konfigurasjonsfil er enklare å lese, forstå og feilsøkje. Hald konfigurasjonen din kortfatta.
> [!note]
> Den beste konfigurasjonsfila er ei kort konfigurasjonsfil.
## Konfigurasjonsfil
Opprett ei konfigurasjonsfil for nettstaden i rotmappa til prosjektmappa, med namnet `hugo.toml`, `hugo.yaml`, eller `hugo.json`, i denne prioriteringsrekkjefølgja.
```text
my-project/
└── hugo.toml
```
> [!note]
> For versjonar v0.109.0 og tidlegare, heitte konfigurasjonsfila for nettstaden `config`. Sjølv om du framleis kan bruka dette namnet, er det tilrådd å byta til den nyare namnjekonvensjonen, `hugo`.
Eit enkelt døme:
{{< code-toggle file=hugo >}}
baseURL = 'https://example.org/'
languageCode = 'en-us'
title = 'ABC Widgets, Inc.'
[params]
subtitle = 'The Best Widgets on Earth'
[params.contact]
email = 'info@example.org'
phone = '+1 202-555-1212'
{{< /code-toggle >}}
For å bruka ei anna konfigurasjonsfil når du byggjer nettstaden, bruk `--config`-flagget:
```sh
hugo --config other.toml
```
Kombiner to eller fleire konfigurasjonsfiler, med venstre-til-høgre prioritet:
```sh
hugo --config a.toml,b.yaml,c.json
```
> [!note]
> Sjå spesifikasjonane for kvart filformat: [TOML], [YAML], og [JSON].
## Konfigurasjonsmappe
I staden for ei enkelt konfigurasjonsfil for nettstaden, kan du dela konfigurasjonen din etter ASD, rotkonfigurajonsnøkkel og språk. Til dømes:
```text
my-project/
└── config/
├── _default/
│ ├── hugo.toml
│ ├── menus.en.toml
│ ├── menus.de.toml
│ └── params.toml
└── production/
└── params.toml
```
Rotkonfigurasjonsnøklane er {{< root-configuration-keys >}}.
### Utelat rotnøkkelen
Når du deler konfigurasjonen etter rotnøkkel, utelat rotnøkkelen i komponentfila. Til dømes er desse ekvivalente:
{{< code-toggle file=config/_default/hugo >}}
[params]
foo = 'bar'
{{< /code-toggle >}}
{{< code-toggle file=config/_default/params >}}
foo = 'bar'
{{< /code-toggle >}}
### Rekursiv parsing
Hugo parsar `config`-mappa rekursivt, noko som tillèt deg å organisera filene i undermappper. Til dømes:
```text
my-project/
└── config/
└── _default/
├── navigation/
│ ├── menus.de.toml
│ └── menus.en.toml
└── hugo.toml
```
### Døme
```text
my-project/
└── config/
├── _default/
│ ├── hugo.toml
│ ├── menus.en.toml
│ ├── menus.de.toml
│ └── params.toml
├── production/
│ ├── hugo.toml
│ └── params.toml
└── staging/
├── hugo.toml
└── params.toml
```
Med utgangspunkt i strukturen ovanfor, når du køyrer `hugo --environment staging`, vil Hugo bruka alle innstillingar frå `config/_default` og fletta `staging` sine oppå desse.
La oss ta eit døme for å forstå dette betre. La oss seia at du brukar Google Analytics for nettstaden din. Dette krev at du spesifiserer ein [Google tag ID] i nettstadkonfigurasjonen din:
{{< code-toggle file=hugo >}}
[services.googleAnalytics]
ID = 'G-XXXXXXXXX'
{{< /code-toggle >}}
Vurder no følgjande scenario:
1. Du vil ikkje lasta inn analysekodan når du køyrer `hugo server`.
1. Du ønskjer å bruka forskjellige Google tag ID-ar for produksjons- og oppsettsmiljøa dine. Til dømes:
- `G-PPPPPPPPP` for produksjon
- `G-SSSSSSSSS` for oppsett
For å tilfredsstilla desse krava, kan du konfigurera nettstaden din slik:
1. `config/_default/hugo.toml`
- Utelat `services.googleAnalytics`-seksjonen. Dette vil hindra lasting av analysekoden når du køyrer `hugo server`.
- Som standard set Hugo `environment` til `development` når du køyrer `hugo server`. I fråvere av ei `config/development`-mappe, brukar Hugo `config/_default`-mappa.
1. `config/production/hugo.toml`
- Ta berre med denne seksjonen:
{{< code-toggle file=hugo >}}
[services.googleAnalytics]
ID = 'G-PPPPPPPPP'
{{< /code-toggle >}}
- Du treng ikkje inkludera andre parametrar i denne fila. Inkluder berre dei parametrane som er spesifikke for produksjonsmiljøet ditt. Hugo vil fletta desse parametrane med standardkonfigurasjonen.
- Som standard set Hugo `environment` til `production` når du køyrer `hugo`. Analysekodan vil bruka `G-PPPPPPPPP` tag ID-en.
1. `config/staging/hugo.toml`
- Ta berre med denne seksjonen:
{{< code-toggle file=hugo >}}
[services.googleAnalytics]
ID = 'G-SSSSSSSSS'
{{< /code-toggle >}}
- Du treng ikkje inkludera andre parametrar i denne fila. Inkluder berre dei parametrane som er spesifikke for oppsetsmiljøet ditt. Hugo vil fletta desse parametrane med standardkonfigurasjonen.
- For å byggja oppsettsnettstaden din, køyr `hugo --environment staging`. Analysekodan vil bruka `G-SSSSSSSSS` tag ID-en.
## Fletting av konfigurasjonsinnstillingar
Hugo flettar konfigurasjonsinnstillingar frå tema og modular, og prioriterar prosjektet sine eigne innstillingar. Gitt denne forenkla prosjektstrukturen med to tema:
```text
project/
├── themes/
│ ├── theme-a/
│ │ └── hugo.toml
│ └── theme-b/
│ └── hugo.toml
└── hugo.toml
```
og denne prosjektnivåkonfigurasjonen:
{{< code-toggle file=hugo >}}
baseURL = 'https://example.org/'
languageCode = 'en-us'
title = 'My New Hugo Site'
theme = ['theme-a','theme-b']
{{< /code-toggle >}}
Hugo flettar innstillingar i denne rekkjefølgja:
1. Prosjektkonfigurasjon (`hugo.toml` i prosjektrota)
1. `theme-a` konfigurasjon
1. `theme-b` konfigurasjon
Innstillinga `_merge` innanfor kvar toppnivåkonfigurasjonsnøkkel kontrollerar _kva_ innstillingar som vert fletta og _korleis_ dei vert fletta.
Verdien for `_merge` kan vera ein av:
none
: Inga fletting.
shallow
: Legg berre til verdiar for nye nøklar.
deep
: Legg til verdiar for nye nøklar, flett eksisterande.
Merk at du ikkje treng vera så detaljert som i standardoppsettet nedanfor; ein `_merge`-verdi høgare oppe vil bli arva om den ikkje er sett.
{{< code-toggle file=hugo dataKey="config_helpers.mergeStrategy" skipHeader=true />}}
## Miljøvariablar
Du kan òg konfigurera innstillingar ved hjelp av miljøvariablar i operativsystemet:
```sh
export HUGO_BASEURL=https://example.org/
export HUGO_ENABLEGITINFO=true
export HUGO_ENVIRONMENT=staging
hugo
```
Det ovanståande set konfigurasjonsvala [`baseURL`], [`enableGitInfo`], og [`environment`] og byggjer deretter nettstaden din.
> [!note]
> Ei miljøvariabel har prioritet over verdiane sett i konfigurasjonsfila. Dette betyr at om du set ein konfigurasjonsverdi med både ei miljøvariabel og i konfigurasjonsfila, vil verdien i miljøvariabelen verta brukt.
Miljøvariablar forenklar konfigurasjonen for [CI/CD](g)-implementeringar som GitHub Pages, GitLab Pages og Netlify ved å tillata deg å setja verdiar direkte i dei respektive konfigurasjonane og arbeidsflytsfilene.
> [!note]
> Miljøvariabelnamna må ha prefiks `HUGO_`.
>
> For å setja tilpassa nettstad-parametrar, set prefiks til namnet med `HUGO_PARAMS_`.
For snake_case-variabelnamn, vil ikkje standardprefikset `HUGO_` fungera. Hugo sluttar seg til skiljetegnet frå det første tegnet etter `HUGO`. Dette gjer det mogleg med variantar som `HUGOxPARAMSxAPI_KEY=abcdefgh` ved bruk av alle [tillatne skiljetegn].
I tillegg til å konfigurera standardinnstillingar, kan miljøvariablar brukast til å overstyra standardverdiar for visse interne innstillingar:
DART_SASS_BINARY
: (`string`) Den absolute filsystempatha til Dart Sass-programmet. Som standard søkjer Hugo etter programmet i kvar av filbanane i miljøvariabelen `PATH`.
HUGO_FILE_LOG_FORMAT
: (`string`) Ein formatstreng for filstien, linjenummeret og kolonnenummeret som vert vist når feil vert rapportert, eller når `Position`-metoden vert kalla frå ein shortcode eller ein Markdown-renderingskrok. Gyldige token er `:file`, `:line`, og `:col`. Standard er `:file::line::col`.
HUGO_MEMORYLIMIT
: {{< new-in 0.123.0 />}}
: (`int`) Den maksimale mengda systemminne, i gigabyte, som Hugo kan bruka under rendering av nettstaden din. Standard er 25% av totalt systemminne. Merk at `HUGO_MEMORYLIMIT` er ei "best effort"-innstilling. Ikkje forvent at Hugo skal byggja ein million sider med berre 1 GB minne. Du kan få meir informasjon om korleis dette oppfører seg under bygginga ved å byggja med `hugo --logLevel info` og sjå etter `dynacache`-etiketten.
HUGO_NUMWORKERMULTIPLIER
: (`int`) Talet på arbeidarar som vert brukte i parallell behandling. Standard er talet på logiske CPUar.
## Gjeldande konfigurasjon
Vis den fullstendige nettstadkonfigurasjonen med:
```sh
hugo config
```
Vis ei spesifikk konfigurasjonsinnstilling med:
```sh
hugo config | grep [key]
```
Vis dei konfigurerte filmonteringane med:
```sh
hugo config mounts
```
[`baseURL`]: /configuration/all#baseurl
[`enableGitInfo`]: /configuration/all#enablegitinfo
[`environment`]: /configuration/all#environment
[Google tag ID]: https://support.google.com/tagmanager/answer/12326985?hl=en
[JSON]: https://datatracker.ietf.org/doc/html/rfc7159
[tillatne skiljetegn]: https://pubs.opengroup.org/onlinepubs/000095399/basedefs/xbd_chap08.html
[TOML]: https://toml.io/en/latest
[YAML]: https://yaml.org/spec/

View File

@ -0,0 +1,209 @@
---
title: Konfigurer utdataformat!!
linkTitle: Utdataformat
description: Konfigurer utdataformat.
categories: []
keywords: []
---
{{% glossary-term "output format" %}}
Du kan generera ei side i så mange format som du vil. Definer eit ubegrensa tal av utdataformat, så lenge kvart av dei resulterer i ei unik filsystembane.
Dette er standardkonfigurasjonen for utdataformat i tabellform:
{{< datatable
"config"
"outputFormats"
"_key"
"mediaType"
"weight"
"baseName"
"isHTML"
"isPlainText"
"noUgly"
"notAlternative"
"path"
"permalinkable"
"protocol"
"rel"
"root"
"ugly"
>}}
## Standardkonfigurasjon
Det følgjande er standardkonfigurasjon som stemmer overeins med tabellen ovanfor:
{{< code-toggle config=outputFormats />}}
baseName
: (`string`) Grunnnamnet på den publiserte fila. Standard er `index`.
isHTML
: (`bool`) Om utdataformatet skal klassifiserast som HTML. Hugo brukar denne verdien for å avgjera når han skal oppretta alias-omdirigeringar og når han skal setja inn LiveReload-skriptet. Standard er `false`.
isPlainText
: (`bool`) Om malar for dette utdataformatet skal tolkast med Go sitt [text/template]-pakke i staden for [html/template]-pakken. Standard er `false`.
mediaType
: (`string`) [Mediatypen](g) til den publiserte fila. Denne må samsvara med ein av dei [konfigurerte mediatypane].
notAlternative
: (`bool`) Om dette utdataformatet skal ekskluderast frå verdiane som blir returnert av [`AlternativeOutputFormats`]-metoden på eit `Page`-objekt. Standard er `false`.
noUgly
: (`bool`) Om stygge URL-ar skal deaktiverast for dette utdataformatet når [`uglyURLs`] er aktivert i nettstadskonfigurasjonen din. Standard er `false`.
path
: (`string`) Banestien til den publiserte fila, relativt til rota av publiseringsmappa. Viss ikkje spesifisert, vil fila bli publisert med innhaldsbana si.
permalinkable
: (`bool`) Om rendreringsutdataformatet, heller enn hovudutdataformatet, skal returnerast når metodane [`Permalink`] og [`RelPermalink`] blir kalla på eit `Page`-objekt. Sjå&nbsp;. Aktivert som standard for `html`- og `amp`-utdataformata. Standard er `false`.
protocol
: (`string`) Protokollen (skjemaet) for URL-en til dette utdataformatet. Til dømes `https://` eller `webcal://`. Standard er skjemaet for [`baseURL`]-parameteren i nettstadkonfigurasjonen din, typisk `https://`.
rel
: (`string`) Viss oppgjeven, kan du tilordna denne verdien til `rel`-attributtet i `link`-element når du itererer over utdataformat i malane dine. Standard er `alternate`.
root
: (`bool`) Om filer skal publiserast i rota av publiseringsmappa. Standard er `false`.
ugly
: (`bool`) Om stygge URL-ar skal aktiverast for dette utdataformatet når `uglyURLs` er `false` i nettstadkonfigurasjonen din. Standard er `false`.
weight
: (`int`) Når sett til ein ikkje-null verdi, brukar Hugo `weight` som det første kriteriet når utdataformat blir sortert, med fall tilbake til namnet på utdataformatet. Lettare element flyt til toppen, medan tyngre element synk til botnen. Hugo rendrer utdataformat sekvensielt basert på sorteringsrekkjefølga. Standard er `0`, med unntak for `html`-utdataformatet, som har ein standardvekt på `10`.
## Endre eit utdataformat
Du kan endra eit av standard utdataformata. Til dømes, for å prioritere `json`-rendring over `html`-rendring, når begge blir generert, juster [`weight`](#weight):
{{< code-toggle file=hugo >}}
[outputFormats.json]
weight = 1
[outputFormats.html]
weight = 2
{{< /code-toggle >}}
Dømet over viser at når du endrar eit standard innhaldsformat, treng du berre definera eigenskapane som avvik frå standardverdiane.
## Opprett eit utdataformat
Du kan laga nye utdataformat etter behov. Til dømes kan du ønskja å laga eit utdataformat for å støtta Atom-feeds.
### Steg 1
Utdataformat krev ein spesifisert mediatype. Sidan Atom-feeds brukar `application/atom+xml`, som ikkje er ein av dei [standard mediatypane], må du oppretta den først.
{{< code-toggle file=hugo >}}
[mediaTypes.'application/atom+xml']
suffixes = ['atom']
{{< /code-toggle >}}
Sjå [konfigurer mediatypar] for meir informasjon.
### Steg 2
Lag eit nytt utdataformat:
{{< code-toggle file=hugo >}}
[outputFormats.atom]
mediaType = 'application/atom+xml'
noUgly = true
{{< /code-toggle >}}
Merk at vi brukar standardinnstillingane for alle andre eigenskapar for utdataformat.
### Steg 3
Spesifiser [types](g) for kva sider som dette utdataformatet skal rendrerast for:
{{< code-toggle file=hugo >}}
[outputs]
home = ['html', 'rss', 'atom']
section = ['html', 'rss', 'atom']
taxonomy = ['html', 'rss', 'atom']
term = ['html', 'rss', 'atom']
{{< /code-toggle >}}
Sjå [konfigurer utdata] for meir informasjon.
### Steg 4
Lag ein mal for å rendrere utdataformatet. Sidan Atom-feeds er lister, må du laga ein listemal. Sjå [mal-oppslags-rekkjefølgja] for å finna den rette malbana:
```text
layouts/_default/list.atom.atom
```
Vi overlet skriving av malkoden som ei øving til deg. Sikte mot eit resultat som liknar på den [innebygde RSS-malen].
## Liste utdataformat
For å få tilgang til utdataformat, har kvart `Page`-objekt to metodar: [`OutputFormats`] (for alle format, inkludert det gjeldande) og [`AlternativeOutputFormats`]. Bruk `AlternativeOutputFormats` for å laga ei lenke `rel`-liste innanfor `head`-elementet på nettstaden din, som vist nedanfor:
```go-html-template
{{ range .AlternativeOutputFormats }}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
{{ end }}
```
## Lenke til utdataformat
Som standard returnerer metodane [`Permalink`] og [`RelPermalink`] for eit `Page`-objekt URL-en til det [types](g), vanlegvis `html`. Denne oppførselen held seg konsistent uavhengig av kva mal som brukast.
Til dømes, i `single.json.json` vil du sjå:
```go-html-template
{{ .RelPermalink }} → /that-page/
{{ with .OutputFormats.Get "json" }}
{{ .RelPermalink }} → /that-page/index.json
{{ end }}
```
For å få desse metodane til å returnera URL-en til den _gjeldande_ malen sitt utdataformat, må du setja innstillinga [`permalinkable`] til `true` for det formatet.
Med `permalinkable` sett til true for `json` i den same `single.json.json`-malen:
```go-html-template
{{ .RelPermalink }} → /that-page/index.json
{{ with .OutputFormats.Get "html" }}
{{ .RelPermalink }} → /that-page/
{{ end }}
```
## Mal-oppslags-rekkjefølgje
Kvart utdataformat krev ein mal som samsvarar med [mal-oppslags-rekkjefølgja].
For høgaste spesifisitet i mal-oppslags-rekkjefølgja, inkluder sidetype, utdataformat og endelse i filnamnet:
```text
[page kind].[output format].[suffix]
```
Til dømes, for seksjonssider:
Utdataformat|Malbane
:--|:--
`html`|`layouts/_default/section.html.html`
`json`|`layouts/_default/section.json.json`
`rss`|`layouts/_default/section.rss.xml`
[`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats/
[`OutputFormats`]: /methods/page/outputformats/
[`Permalink`]: /methods/page/permalink/
[`RelPermalink`]: /methods/page/relpermalink/
[`baseURL`]: /configuration/all/#baseurl
[`permalinkable`]: #permalinkable
[`uglyURLs`]: /configuration/ugly-urls/
[konfigurer mediatypar]: /configuration/media-types/
[konfigurer utdata]: /configuration/outputs/
[konfigurerte mediatypane]: /configuration/media-types/
[standard mediatypane]: /configuration/media-types/
[innebygde RSS-malen]: {{% eturl rss %}}
[html/template]: https://pkg.go.dev/html/template
[mal-oppslags-rekkjefølgja]: /templates/lookup-order/
[text/template]: https://pkg.go.dev/text/template

328
hugo.toml
View File

@ -1,173 +1,193 @@
baseURL = "https://gohugo.io/"
defaultContentLanguage = "en"
enableEmoji = true
pluralizeListTitles = false
timeZone = "Europe/Oslo"
title = "Hugo"
baseURL = "https://gohugo.io/"
defaultContentLanguage = "en"
enableEmoji = true
pluralizeListTitles = false
timeZone = "Europe/Oslo"
title = "Hugo"
defaultContentVersion = "v2.0.0"
defaultContentVersionInSubDir = false
# We do redirects via Netlify's _redirects file, generated by Hugo (see "outputs" below).
disableAliases = true
[build]
[build.buildStats]
disableIDs = true
enable = true
[[build.cachebusters]]
source = "assets/notwatching/hugo_stats\\.json"
target = "css"
[[build.cachebusters]]
source = "(postcss|tailwind)\\.config\\.js"
target = "css"
[caches]
[caches.images]
dir = ":cacheDir/images"
maxAge = "1440h"
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = "1h"
[cascade]
[cascade.params]
hide_in_this_section = true
show_publish_date = true
[cascade.target]
kind = 'page'
path = '{/news/**}'
[frontmatter]
date = ['date'] # do not add publishdate; it will affect page sorting
expiryDate = ['expirydate']
lastmod = [':git', 'lastmod', 'publishdate', 'date']
publishDate = ['publishdate', 'date']
[languages]
[languages.en]
languageCode = "en-US"
languageName = "English"
weight = 1
[markup]
[markup.goldmark]
[markup.goldmark.extensions]
[markup.goldmark.extensions.typographer]
disable = false
[markup.goldmark.extensions.passthrough]
enable = true
[markup.goldmark.extensions.passthrough.delimiters]
block = [['\[', '\]'], ['$$', '$$']]
inline = [['\(', '\)']]
[markup.goldmark.parser]
autoDefinitionTermID = true
[markup.goldmark.parser.attribute]
block = true
[markup.highlight]
lineNumbersInTable = false
noClasses = false
style = 'solarized-dark'
wrapperClass = 'highlight not-prose'
[mediaTypes]
[mediaTypes."text/netlify"]
delimiter = ""
[module]
[module.hugoVersion]
min = "0.144.0"
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
lang = 'en'
source = 'content/en'
target = 'content'
[[module.mounts]]
disableWatch = true
source = "hugo_stats.json"
target = "assets/notwatching/hugo_stats.json"
[outputFormats]
[outputFormats.redir]
baseName = "_redirects"
isPlainText = true
mediatype = "text/netlify"
[outputFormats.headers]
baseName = "_headers"
isPlainText = true
mediatype = "text/netlify"
notAlternative = true
[outputs]
home = ["html", "rss", "redir", "headers"]
page = ["html"]
section = ["html"]
taxonomy = ["html"]
term = ["html"]
disableKinds = ["rss"]
[params]
description = "The worlds fastest framework for building websites"
ghrepo = "https://github.com/gohugoio/hugoDocs/"
[params.render_hooks.link]
errorLevel = 'warning' # ignore (default), warning, or error (fails the build)
[params.social.mastodon]
url = "https://fosstodon.org/@gohugoio"
description = "The worlds fastest framework for building websites"
ghrepo = "https://github.com/gohugoio/hugoDocs/"
[params.render_hooks.link]
errorLevel = 'warning'
[params.social.mastodon]
url = "https://fosstodon.org/@gohugoio"
[languages]
[languages.en]
languageCode = "en-US"
languageName = "English"
weight = 1
[languages.nn]
languageCode = "nn"
languageName = "Nynorsk"
weight = 2
[versions]
[versions."v1.0.0"]
[versions."v2.0.0"]
[build]
[build.buildStats]
disableIDs = true
enable = true
[[build.cachebusters]]
source = "assets/notwatching/hugo_stats\\.json"
target = "css"
[[build.cachebusters]]
source = "(postcss|tailwind)\\.config\\.js"
target = "css"
[caches]
[caches.images]
dir = ":cacheDir/images"
maxAge = "1440h"
[caches.getresource]
dir = ':cacheDir/:project'
maxAge = "1h"
[[cascade]]
[cascade.params]
hide_in_this_section = true
show_publish_date = true
[cascade.target]
kind = 'page'
path = '{/news/**}'
[frontmatter]
date = ['date'] # do not add publishdate; it will affect page sorting
expiryDate = ['expirydate']
lastmod = [':git', 'lastmod', 'publishdate', 'date']
publishDate = ['publishdate', 'date']
[markup]
[markup.goldmark]
[markup.goldmark.extensions]
[markup.goldmark.extensions.typographer]
disable = false
[markup.goldmark.extensions.passthrough]
enable = true
[markup.goldmark.extensions.passthrough.delimiters]
block = [['\[', '\]'], ['$$', '$$']]
inline = [['\(', '\)']]
[markup.goldmark.parser]
autoDefinitionTermID = true
[markup.goldmark.parser.attribute]
block = true
[markup.highlight]
lineNumbersInTable = false
noClasses = false
style = 'solarized-dark'
wrapperClass = 'highlight not-prose'
[mediaTypes]
[mediaTypes."text/netlify"]
delimiter = ""
[module]
[module.hugoVersion]
min = "0.144.0"
[[module.mounts]]
source = "assets"
target = "assets"
[[module.mounts]]
source = 'content/en'
target = 'content'
[module.mounts.dimensions]
languages = ["**"]
versions = ["**"]
[[module.mounts]]
source = 'content/nn'
target = 'content'
[module.mounts.dimensions]
languages = ["nn"]
versions = ["**"]
[[module.mounts]]
disableWatch = true
source = "hugo_stats.json"
target = "assets/notwatching/hugo_stats.json"
[outputFormats]
[outputFormats.redir]
baseName = "_redirects"
isPlainText = true
mediatype = "text/netlify"
[outputFormats.headers]
baseName = "_headers"
isPlainText = true
mediatype = "text/netlify"
notAlternative = true
[outputs]
home = ["html", "rss", "redir", "headers"]
page = ["html"]
section = ["html"]
taxonomy = ["html"]
term = ["html"]
[related]
includeNewer = true
threshold = 80
toLower = true
[[related.indices]]
name = 'keywords'
weight = 1
includeNewer = true
threshold = 80
toLower = true
[[related.indices]]
name = 'keywords'
weight = 1
[security]
[security.funcs]
getenv = ['^HUGO_', '^REPOSITORY_URL$', '^BRANCH$']
[security.funcs]
getenv = ['^HUGO_', '^REPOSITORY_URL$', '^BRANCH$']
[server]
[[server.headers]]
for = "/*"
[server.headers.values]
X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "no-referrer"
[[server.headers]]
for = "/**.{css,js}"
[[server.headers]]
for = "/*"
[server.headers.values]
X-Frame-Options = "DENY"
X-XSS-Protection = "1; mode=block"
X-Content-Type-Options = "nosniff"
Referrer-Policy = "no-referrer"
[[server.headers]]
for = "/**.{css,js}"
[services]
[services.googleAnalytics]
ID = 'G-MBZGKNMDWC'
[services.googleAnalytics]
ID = 'G-MBZGKNMDWC'
[taxonomies]
category = 'categories'
category = 'categories'
######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES ########
[menus]
[[menus.global]]
identifier = 'news'
name = 'News'
pageRef = '/news/'
weight = 1
[[menus.global]]
identifier = 'docs'
name = 'Docs'
url = '/documentation/'
weight = 5
[[menus.global]]
identifier = 'themes'
name = 'Themes'
url = 'https://themes.gohugo.io/'
weight = 10
[[menus.global]]
identifier = 'community'
name = 'Community'
post = 'external'
url = 'https://discourse.gohugo.io/'
weight = 150
[[menus.global]]
identifier = 'github'
name = 'GitHub'
post = 'external'
url = 'https://github.com/gohugoio/hugo'
weight = 200
[[menus.global]]
identifier = 'news'
name = 'News'
pageRef = '/news/'
weight = 1
[[menus.global]]
identifier = 'docs'
name = 'Docs'
url = '/documentation/'
weight = 5
[[menus.global]]
identifier = 'themes'
name = 'Themes'
url = 'https://themes.gohugo.io/'
weight = 10
[[menus.global]]
identifier = 'community'
name = 'Community'
post = 'external'
url = 'https://discourse.gohugo.io/'
weight = 150
[[menus.global]]
identifier = 'github'
name = 'GitHub'
post = 'external'
url = 'https://github.com/gohugoio/hugo'
weight = 200

View File

@ -84,7 +84,7 @@ either of these shortcodes in conjunction with this render hook.
{{- /* Verify minimum required version. */}}
{{- $minHugoVersion := "0.141.0" }}
{{- if lt hugo.Version $minHugoVersion }}
{{- errorf "The %q render hook requires Hugo v%s or later." $renderHookName $minHugoVersion }}
{{- warnf "The %q render hook requires Hugo v%s or later." $renderHookName $minHugoVersion }}
{{- end }}
{{- /* Error level when unable to resolve destination: ignore, warning, or error. */}}
@ -95,7 +95,7 @@ either of these shortcodes in conjunction with this render hook.
{{- /* Validate error level. */}}
{{- if not (in (slice "ignore" "warning" "error") $errorLevel) }}
{{- errorf "The %q render hook is misconfigured. The errorLevel %q is invalid. Please check your site configuration." $renderHookName $errorLevel }}
{{- warnf "The %q render hook is misconfigured. The errorLevel %q is invalid. Please check your site configuration." $renderHookName $errorLevel }}
{{- end }}
{{- /* Determine content path for warning and error messages. */}}
@ -157,7 +157,7 @@ either of these shortcodes in conjunction with this render hook.
{{- $attrs = merge $attrs (dict "class" "broken") }}
{{- end }}
{{- else if eq $errorLevel "error" }}
{{- errorf $msg }}
{{- warnf $msg }}
{{- end }}
{{- end }}
{{- else }}
@ -179,7 +179,7 @@ either of these shortcodes in conjunction with this render hook.
{{- $attrs = merge $attrs (dict "class" "broken") }}
{{- end }}
{{- else if eq $errorLevel "error" }}
{{- errorf $msg }}
{{- warnf $msg }}
{{- end }}
{{- end }}
{{- end }}
@ -222,7 +222,7 @@ either of these shortcodes in conjunction with this render hook.
{{- if eq $errorLevel "warning" }}
{{- warnf $msg }}
{{- else if eq $errorLevel "error" }}
{{- errorf $msg }}
{{- warnf $msg }}
{{- end }}
{{- end }}
{{- else }}
@ -242,7 +242,7 @@ either of these shortcodes in conjunction with this render hook.
{{- if eq $errorLevel "warning" }}
{{- warnf $msg }}
{{- else if eq $errorLevel "error" }}
{{- errorf $msg }}
{{- warnf $msg }}
{{- end }}
{{- end }}
{{- end }}
@ -281,7 +281,7 @@ either of these shortcodes in conjunction with this render hook.
{{- /* Verify that the glossary page exists. */}}
{{- $glossaryPage := site.GetPage $glossaryPath }}
{{- if not $glossaryPage }}
{{- errorf "The %q render hook was unable to find %s: see %s" $renderHookName $glossaryPath $contentPath }}
{{- warnf "The %q render hook was unable to find %s: see %s" $renderHookName $glossaryPath $contentPath }}
{{- end }}
{{- /* There's a better way to handle this, but it works for now. */}}
@ -307,7 +307,7 @@ either of these shortcodes in conjunction with this render hook.
{{- end }}
{{- if not $termActual }}
{{- errorf "The %q render hook was unable to find a glossary page for either the singular or plural form of the term %q: see %s" $renderHookName $termGiven $contentPath }}
{{- warnf "The %q render hook was unable to find a glossary page for either the singular or plural form of the term %q: see %s" $renderHookName $termGiven $contentPath }}
{{- end }}
{{- /* Create the href attribute. */}}

View File

@ -0,0 +1,72 @@
{{ $pages := .page.Rotate .dimension }}
{{ warnf "%s got %d" .dimension (len $pages) }}
{{ $selected := .page }}
<div class="mt-2">
<div
x-data="{
open: false,
toggle() {
if (this.open) {
return this.close()
}
this.$refs.button.focus()
this.open = true
},
close(focusAfter) {
if (! this.open) return
this.open = false
focusAfter && focusAfter.focus()
}
}"
x-on:keydown.escape.prevent.stop="close($refs.button)"
x-on:focusin.window="! $refs.panel.contains($event.target) && close()"
x-id="['dropdown-button']"
class="relative">
<button
x-ref="button"
x-on:click="toggle()"
:aria-expanded="open"
:aria-controls="$id('dropdown-button')"
type="button"
class="relative flex items-center whitespace-nowrap justify-center gap-2 py-2 rounded-lg shadow-sm bg-white hover:bg-gray-50 text-gray-800 border border-gray-200 hover:border-gray-200 px-4">
<span>
{{/* Dimension is one of language, version or role. */}}
{{ with $selected.Site.Dimension $.dimension }}{{ .Name }}{{ end }}
</span>
<!-- Heroicon: micro chevron-down -->
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 16 16"
fill="currentColor"
class="size-4">
<path
fill-rule="evenodd"
d="M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z"
clip-rule="evenodd" />
</svg>
</button>
<div
x-ref="panel"
x-show="open"
x-transition.origin.top.left
x-on:click.outside="close($refs.button)"
:id="$id('dropdown-button')"
x-cloak
class="absolute left-0 min-w-48 rounded-lg shadow-sm mt-2 z-10 origin-top-left bg-white p-1.5 outline-none border border-gray-200">
{{ range $pages }}
<a
href="{{ .RelPermalink }}"
class="px-2 lg:py-1.5 py-2 w-full flex items-center rounded-md transition-colors text-left text-gray-800 hover:bg-gray-50 focus-visible:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed">
{{/* Dimension is one of language, version or role. */}}
{{ with .Site.Dimension $.dimension }}{{ .Name }}{{ end }}
</a>
{{ end }}
</div>
</div>
</div>

View File

@ -41,9 +41,10 @@
</div>
</div>
<div class="-my-5 pl-2 grow-0">
{{/* Search. */}}
{{ partial "layouts/search/input.html" . }}
<div class="-my-5 pl-2 grow-0 flex space-x-2">
{{ partial "dimensionselector.html" (dict "title" "Versions" "dimension" "version" "page" . ) }}
{{ partial "dimensionselector.html" (dict "title" "Languages" "dimension" "language" "page" . ) }}
</div>
<div
class="relative ml-0 md:ml-8 flex content-center basis-0 justify-end gap-0 sm:gap-1 xl:grow-1">
@ -57,8 +58,7 @@
class="hidden sm:block ml-2 sm:ml-6 h-6 fill-slate-400 group-hover:fill-slate-500 dark:group-hover:fill-slate-300">
{{ partial "layouts/header/githubstars.html" . }}
</div>
<div
class="hidden sm:block ml-2 sm:ml-6 h-6">
<div class="hidden sm:block ml-2 sm:ml-6 h-6">
{{ partial "layouts/header/mastodon.html" . }}
</div>
</div>

View File

@ -35,6 +35,7 @@
<body
class="flex flex-col min-h-full bg-white dark:bg-blue-950 kind-{{ .Kind }}">
{{ partial "layouts/hooks/body-start.html" . }}
{{/* Layout. */}}
{{ block "header" . }}
{{ partial "layouts/header/header.html" . }}

View File

@ -18,7 +18,7 @@
class="w-64 aspect-3/1 mx-auto mb-8">
<h1
class="text-4xl font-bold tracking-tight text-balance text-gray-900 dark:text-gray-300 sm:text-6xl">
The worlds fastest framework for building websites
{{ .Title }}
</h1>
<div
class="mt-8 text-lg font-medium text-pretty text-gray-800 dark:text-gray-400 sm:text-xl/8">