butiran

script/loader shortcode

· 1 min read · edit

Loader for JS codes in static/js and assets/js.

[no visual available]

usage

{{< script/loader >}}
plotly/3.3.0/plotly-cartesian.min.js
d3/3.5.17/d3.min.js
chartjs/4.5.1/chart.umd.min.js
canvasplot/0.0.0/canvasplot.js
butiran/0.0.29/butiran.min.js
{{< /script/loader >}}
{{< script/loader >}}
26a94.js
{{< /script/loader >}}

code

{{ range split .Inner "\n" }}
  {{- $script := trim . " \r" -}}
  {{- if ne $script "" -}}

    {{- $asset := resources.Get (printf "js/%s" $script) -}}

    {{- if $asset -}}
      {{- /* assets/js → minify + fingerprint */ -}}
      {{- $js := $asset | js.Build | resources.Minify | resources.Fingerprint -}}
      <script src="{{ $js.RelPermalink }}" integrity="{{ $js.Data.Integrity }}" defer></script>
    {{- else -}}
      {{- /* static/js → use as-is */ -}}
      <script src="{{ printf "js/%s" $script | relURL }}" defer></script>
    {{- end -}}

  {{- end -}}
{{ end }}

notes

Previous version is as follow.

{{ $baseURL := site.BaseURL }}
{{ range split .Inner "\n" }}
  {{- $script := trim . " \r" -}} <!-- Trim spaces and possible trailing \r -->
  {{- if ne $script "" -}}
    <script src="{{ printf "%sjs/%s?v=%d" $baseURL $script (now.Unix) | relURL }}"></script>
  {{- end -}}
{{ end }}

It works only for JS in static/js and is modified as suggested 1 to be the current version.

refs


  1. GPT-5.2, “Minifying JS in Hugo”, ChatGPT, 24 Jan 2026, url https://chatgpt.com/share/6974d6e1-b650-800a-8771-c96d6740dcf3 [20260124]. ↩︎