hugo: improve build performance

use cached partials for repeat templates and icons

Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com>
This commit is contained in:
David Karlsson 2024-03-04 12:49:44 +01:00
parent d29dbaf482
commit df0455d16f
12 changed files with 35 additions and 33 deletions

View File

@ -54,12 +54,14 @@ the Azure resources.
{{< accordion title="JSON template" >}} {{< accordion title="JSON template" >}}
{{< acr-template.inline >}} {{< acr-template.inline >}}
{{ $data := data.GetJSON "https://prod-scout-integration-templates.s3.amazonaws.com/latest/acr_token_template.json" }} {{ with resources.GetRemote "https://prod-scout-integration-templates.s3.amazonaws.com/latest/acr_token_template.json" }}
{{ $data := .Content | transform.Unmarshal }}
```json ```json
{{ transform.Remarshal "json" $data }} {{ transform.Remarshal "json" $data }}
``` ```
{{ end }}
{{< /acr-template.inline >}} {{< /acr-template.inline >}}
{{< /accordion >}} {{< /accordion >}}

View File

@ -7,8 +7,8 @@
copying = true; copying = true;
setTimeout(() => copying = false, 2000);" setTimeout(() => copying = false, 2000);"
> >
<span :class="{ 'group-hover:block' : !copying }" class="hidden icon-svg">{{ partial "icon" "content_copy" }}</span> <span :class="{ 'group-hover:block' : !copying }" class="hidden icon-svg">{{ partialCached "icon" "content_copy" "content_copy" }}</span>
<span :class="{ 'group-hover:block' : copying }" class="hidden icon-svg">{{ partial "icon" "check_circle" }}</span> <span :class="{ 'group-hover:block' : copying }" class="hidden icon-svg">{{ partialCached "icon" "check_circle" "check_circle" }}</span>
</button> </button>
{{ $result := transform.HighlightCodeBlock . }} {{ $result := transform.HighlightCodeBlock . }}
<div class="syntax-light dark:syntax-dark"> <div class="syntax-light dark:syntax-dark">

View File

@ -37,7 +37,7 @@
<button <button
class="text-white fixed z-30 top-6 right-8 icon-svg" class="text-white fixed z-30 top-6 right-8 icon-svg"
> >
{{ partial "icon" "close" }} {{ partialCached "icon" "close" "close" }}
</button> </button>
<img <img
loading="lazy" loading="lazy"

View File

@ -8,7 +8,7 @@
rel="noopener"> rel="noopener">
{{- .Text | safeHTML -}} {{- .Text | safeHTML -}}
<span class="pl-1 icon-svg icon-sm"> <span class="pl-1 icon-svg icon-sm">
{{- partial "icon" "open_in_new" -}} {{- partialCached "icon" "open_in_new" "open_in_new" -}}
</span></a> </span></a>
{{- else if (strings.HasPrefix $url "/") -}} {{- else if (strings.HasPrefix $url "/") -}}
{{/* absolute link, use url as-is */}} {{/* absolute link, use url as-is */}}

View File

@ -33,7 +33,7 @@
<tr> <tr>
<th class="text-left w-32 flex items-center gap-2"> <th class="text-left w-32 flex items-center gap-2">
<span>Aliases</span> <span>Aliases</span>
{{ partial "tooltip.html" "An alias is a short or memorable alternative for a longer command." }} {{ partialCached "tooltip.html" "An alias is a short or memorable alternative for a longer command." "cli-alias" }}
</th> </th>
<td> <td>
<div class="flex gap-3"> <div class="flex gap-3">
@ -71,19 +71,19 @@
{{ end }} {{ end }}
{{ with $data.kubernetes }} {{ with $data.kubernetes }}
<p> <p>
{{ partial "components/badge.html" (dict "color" "blue" "content" "Kubernetes") }} {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Kubernetes") "k8s" }}
This command works with the Kubernetes orchestrator. This command works with the Kubernetes orchestrator.
</p> </p>
{{ end }} {{ end }}
{{ with $data.swarm }} {{ with $data.swarm }}
<p> <p>
{{ partial "components/badge.html" (dict "color" "blue" "content" "Swarm") }} {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Swarm") "swarm" }}
This command works with the Swarm orchestrator. This command works with the Swarm orchestrator.
</p> </p>
{{ end }} {{ end }}
{{ with $data.long }} {{ with $data.long }}
{{ $heading := dict "level" 2 "text" "Description" }} {{ $heading := dict "level" 2 "text" "Description" }}
{{ partial "heading.html" $heading }} {{ partialCached "heading.html" $heading "cli-description" }}
{{ $subHeadings := (strings.FindRE `(?m:#{3,4} .*)` .) }} {{ $subHeadings := (strings.FindRE `(?m:#{3,4} .*)` .) }}
{{ $.Scratch.Add "headings" $heading }} {{ $.Scratch.Add "headings" $heading }}
{{ range $subHeadings }} {{ range $subHeadings }}
@ -97,7 +97,7 @@
{{ $opts := where . "hidden" false }} {{ $opts := where . "hidden" false }}
{{ with $opts }} {{ with $opts }}
{{ $heading := dict "level" 2 "text" "Options" }} {{ $heading := dict "level" 2 "text" "Options" }}
{{ partial "heading.html" $heading }} {{ partialCached "heading.html" $heading "cli-options" }}
{{ $.Scratch.Add "headings" $heading }} {{ $.Scratch.Add "headings" $heading }}
<table> <table>
<thead> <thead>
@ -129,22 +129,22 @@
</td> </td>
<td> <td>
{{ with .min_api_version }} {{ with .min_api_version }}
{{ partial "components/badge.html" (dict "color" "blue" "content" (printf "API %s+" .)) }} {{ partialCached "components/badge.html" (dict "color" "blue" "content" (printf "API %s+" .)) "api" . }}
{{ end }} {{ end }}
{{ with .deprecated }} {{ with .deprecated }}
{{ partial "components/badge.html" (dict "color" "red" "content" "Deprecated") }} {{ partialCached "components/badge.html" (dict "color" "red" "content" "Deprecated") "deprecated" }}
{{ end }} {{ end }}
{{ with .experimental }} {{ with .experimental }}
{{ partial "components/badge.html" (dict "color" "amber" "content" "experimental (daemon)") }} {{ partialCached "components/badge.html" (dict "color" "amber" "content" "experimental (daemon)") "exp" }}
{{ end }} {{ end }}
{{ with .experimentalcli }} {{ with .experimentalcli }}
{{ partial "components/badge.html" (dict "color" "amber" "content" "experimental (CLI)") }} {{ partialCached "components/badge.html" (dict "color" "amber" "content" "experimental (CLI)") "exp-cli" }}
{{ end }} {{ end }}
{{ with .kubernetes }} {{ with .kubernetes }}
{{ partial "components/badge.html" (dict "color" "blue" "content" "Kubernetes") }} {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Kubernetes") "k8s" }}
{{ end }} {{ end }}
{{ with .swarm }} {{ with .swarm }}
{{ partial "components/badge.html" (dict "color" "blue" "content" "Swarm") }} {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Swarm") "swarm" }}
{{ end }} {{ end }}
{{ if .description }} {{ if .description }}
{{/* replace newlines in long desc with break tags */}} {{/* replace newlines in long desc with break tags */}}
@ -159,7 +159,7 @@
{{ end }} {{ end }}
{{ with $data.examples }} {{ with $data.examples }}
{{ $heading := dict "level" 2 "text" "Examples" }} {{ $heading := dict "level" 2 "text" "Examples" }}
{{ partial "heading.html" $heading }} {{ partialCached "heading.html" $heading "cli-examples" }}
{{ $subHeadings := (strings.FindRE `(?m:#{3,4} .*)` .) }} {{ $subHeadings := (strings.FindRE `(?m:#{3,4} .*)` .) }}
{{ $.Scratch.Add "headings" $heading }} {{ $.Scratch.Add "headings" $heading }}
{{ range $subHeadings }} {{ range $subHeadings }}
@ -171,7 +171,7 @@
{{ end }} {{ end }}
{{ if eq .Kind "section" }} {{ if eq .Kind "section" }}
{{ $heading := dict "level" 2 "text" "Subcommands" }} {{ $heading := dict "level" 2 "text" "Subcommands" }}
{{ partial "heading.html" $heading }} {{ partialCached "heading.html" $heading "cli-subcommands" }}
{{ $.Scratch.Add "headings" $heading }} {{ $.Scratch.Add "headings" $heading }}
<table> <table>
<thead> <thead>

View File

@ -281,7 +281,7 @@
</div> </div>
</div> </div>
</main> </main>
<footer>{{ partial "footer.html" . }}</footer> <footer>{{ partialCached "footer.html" . }}</footer>
</body> </body>
</html> </html>

View File

@ -1,8 +1,8 @@
<div x-data="{ open: false }" class="border border-gray-light-200 dark:border-gray-dark-200 bg-white dark:bg-gray-dark-100"> <div x-data="{ open: false }" class="border border-gray-light-200 dark:border-gray-dark-200 bg-white dark:bg-gray-dark-100">
<button class="not-prose w-full py-2 px-4 flex justify-between" x-on:click="open = ! open"> <button class="not-prose w-full py-2 px-4 flex justify-between" x-on:click="open = ! open">
<span>{{ .title }}</span> <span>{{ .title }}</span>
<span :class="{ 'hidden' : !open }" class="icon-svg">{{ partial "icon" "expand_less" }}</span> <span :class="{ 'hidden' : !open }" class="icon-svg">{{ partialCached "icon" "expand_less" "expand_less" }}</span>
<span :class="{ 'hidden' : open }" class="icon-svg">{{ partial "icon" "expand_more" }}</span> <span :class="{ 'hidden' : open }" class="icon-svg">{{ partialCached "icon" "expand_more" "expand_more" }}</span>
</button> </button>
<div x-show="open" x-collapse class="px-4"> <div x-show="open" x-collapse class="px-4">

View File

@ -2,21 +2,21 @@
{{ with .File }} {{ with .File }}
{{ if not (in .Filename "/_vendor/") }} {{ if not (in .Filename "/_vendor/") }}
<p class="flex items-center gap-2"> <p class="flex items-center gap-2">
<span class="icon-svg">{{ partial "icon" "edit" }}</span> <span class="icon-svg">{{ partialCached "icon" "edit" "edit" }}</span>
<a class="link" target="_blank" rel="noopener" <a class="link" target="_blank" rel="noopener"
href="{{ site.Params.repo }}/edit/main/content/{{ .Path }}">{{- T "editPage" -}} href="{{ site.Params.repo }}/edit/main/content/{{ .Path }}">{{- T "editPage" -}}
<span class="icon-svg icon-xs"> <span class="icon-svg icon-xs">
{{ partial "icon" "open_in_new" }} {{ partialCached "icon" "open_in_new" "open_in_new" }}
</span></a> </span></a>
</p> </p>
{{ end }} {{ end }}
{{ end }} {{ end }}
<p class="flex items-center gap-2"> <p class="flex items-center gap-2">
<span class="icon-svg">{{ partial "icon" "done" }}</span> <span class="icon-svg">{{ partialCached "icon" "done" "done" }}</span>
<a class="link" target="_blank" rel="noopener" <a class="link" target="_blank" rel="noopener"
href="{{ site.Params.repo }}/issues/new?template=doc_issue.yml&location={{ .Permalink }}&labels=status%2Ftriage">{{- T "requestChanges" -}} href="{{ site.Params.repo }}/issues/new?template=doc_issue.yml&location={{ .Permalink }}&labels=status%2Ftriage">{{- T "requestChanges" -}}
<span class="icon-svg icon-xs"> <span class="icon-svg icon-xs">
{{ partial "icon" "open_in_new" }} {{ partialCached "icon" "open_in_new" "open_in_new" }}
</span></a> </span></a>
</a> </a>
</p> </p>

View File

@ -38,7 +38,7 @@
{{ end }} {{ end }}
{{/* preload Roboto Flex as it's a critical font: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload */}} {{/* preload Roboto Flex as it's a critical font: https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel/preload */}}
<link href="/assets/fonts/RobotoFlex.woff2" rel="preload" as="font" type="font/woff2" crossorigin /> <link href="/assets/fonts/RobotoFlex.woff2" rel="preload" as="font" type="font/woff2" crossorigin />
{{ partial "utils/css.html" . }} {{ partialCached "utils/css.html" "-" }}
{{ $theme := resources.Get "js/theme.js" | js.Build (dict "minify" true) }} {{ $theme := resources.Get "js/theme.js" | js.Build (dict "minify" true) }}
<script>{{ $theme.Content | safeJS }}</script> <script>{{ $theme.Content | safeJS }}</script>
{{ $js := resources.Match "js/src/**.js" {{ $js := resources.Match "js/src/**.js"
@ -55,4 +55,4 @@
}} }}
<script defer src="{{ $js.Permalink }}"></script> <script defer src="{{ $js.Permalink }}"></script>
<link rel="preconnect" href="https://{{ site.Params.algolia.appid }}-dsn.algolia.net" crossorigin /> <link rel="preconnect" href="https://{{ site.Params.algolia.appid }}-dsn.algolia.net" crossorigin />
{{ partialCached "utils/resources.html" . }} {{ partialCached "utils/resources.html" "-" }}

View File

@ -11,7 +11,7 @@
sidebar.classList.replace('md:block', 'md:hidden'); sidebar.classList.replace('md:block', 'md:hidden');
} }
}" class="icon-svg hidden px-4 md:block" aria-label="Menu"> }" class="icon-svg hidden px-4 md:block" aria-label="Menu">
{{ partial "icon" "menu" }} {{ partialCached "icon" "menu" "menu" }}
</button> </button>
{{ end }} {{ end }}
<div> <div>
@ -31,8 +31,8 @@
localStorage.setItem('theme-preference', value); localStorage.setItem('theme-preference', value);
document.firstElementChild.className = value; document.firstElementChild.className = value;
})" @click="theme = (theme === 'dark' ? 'light' : 'dark')"> })" @click="theme = (theme === 'dark' ? 'light' : 'dark')">
<span class="icon-svg dark:hidden">{{ partial "icon" "light_mode"}}</span> <span class="icon-svg dark:hidden">{{ partialCached "icon" "light_mode" "light_mode"}}</span>
<span class="icon-svg hidden dark:block">{{ partial "icon" "dark_mode"}}</span> <span class="icon-svg hidden dark:block">{{ partialCached "icon" "dark_mode" "dark_mode"}}</span>
</button> </button>
</div> </div>
</div> </div>

View File

@ -49,10 +49,10 @@
{{ markdownify .entry.sectiontitle }} {{ markdownify .entry.sectiontitle }}
</span> </span>
<span class="icon-svg {{ if $expanded }}hidden{{ end }}"> <span class="icon-svg {{ if $expanded }}hidden{{ end }}">
{{ partial "icon" "expand_more" }} {{ partialCached "icon" "expand_more" "expand_more" }}
</span> </span>
<span class="icon-svg {{ if not $expanded }}hidden{{ end }}"> <span class="icon-svg {{ if not $expanded }}hidden{{ end }}">
{{ partial "icon" "expand_less" }} {{ partialCached "icon" "expand_less" "expand_less" }}
</span> </span>
</button> </button>
<ul class="{{if not $expanded}}hidden {{end}}ml-3 md:ml-[21px]"> <ul class="{{if not $expanded}}hidden {{end}}ml-3 md:ml-[21px]">

View File

@ -1,6 +1,6 @@
<div data-tooltip-wrapper> <div data-tooltip-wrapper>
<div data-tooltip-button class="icon-svg flex items-center text-blue-light dark:text-blue-dark"> <div data-tooltip-button class="icon-svg flex items-center text-blue-light dark:text-blue-dark">
{{ partial "icon" "help" }} {{ partialCached "icon" "help" "help" }}
</div> </div>
<div data-tooltip-body <div data-tooltip-body
class="absolute left-0 top-0 hidden max-w-56 rounded bg-accent-light p-2 text-white dark:bg-accent-dark" class="absolute left-0 top-0 hidden max-w-56 rounded bg-accent-light p-2 text-white dark:bg-accent-dark"