js.html

This partial layout concatenates all of the modular VanillaJS files found in themes/milo/assets/js and outputs a bundle.js file for deployment use. It also minifies and fingerprints the output.

Source Code

{{- $jsResources := slice }}
{{- $jsResources = $jsResources | append (resources.Get "js/main.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/chat.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/darkmode.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/search.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/tiles.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/tabs.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/glossary.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/toc.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/sidebar-left.js") }}
{{- $jsResources = $jsResources | append (resources.Get "js/chatTocToggle.js") }}

{{- if eq hugo.Environment "development" }}
  {{- $jsBundle := $jsResources | resources.Concat "js/bundle.js" | js.Build }}
  <script src="{{ $jsBundle.RelPermalink }}"></script>
{{- else }}
  {{- $opts := dict "minify" true }}
  {{- $jsBundle := $jsResources | resources.Concat "js/bundle.js" | js.Build $opts | fingerprint }}
  <script src="{{ $jsBundle.RelPermalink }}" integrity="{{ $jsBundle.Data.Integrity }}" crossorigin="anonymous"></script>
{{- end }}