diff options
author | Regis Philibert <login@regisphilibert.com> | 2020-07-03 18:33:57 +0300 |
---|---|---|
committer | XhmikosR <xhmikosr@gmail.com> | 2020-11-19 21:54:42 +0300 |
commit | 3fcfd606f2c264f1d3434e99c140a05edec461c3 (patch) | |
tree | c9f342298c720c911d283b71b55df97354358f53 /site/layouts | |
parent | 6b071116f3b09b59a423ad999efbd67f8645bfa5 (diff) |
Add Hugo Pipes logic for local and vendored scripts.
Diffstat (limited to 'site/layouts')
-rw-r--r-- | site/layouts/partials/func/get-js-assets.html | 74 | ||||
-rw-r--r-- | site/layouts/partials/scripts.html | 18 |
2 files changed, 78 insertions, 14 deletions
diff --git a/site/layouts/partials/func/get-js-assets.html b/site/layouts/partials/func/get-js-assets.html new file mode 100644 index 0000000000..a7a27292e7 --- /dev/null +++ b/site/layouts/partials/func/get-js-assets.html @@ -0,0 +1,74 @@ +{{/* + get-js-assets + Returns a list of processed Hugo Assets to be used in templates + + @author @regisphilibert + + @context Page (.) + + @access public + + @example - Go Template + {{- range partialCached "func/get-js-assets" . $variant -}} + <script src="{{ .RelPermalink }}"></script> + {{- end -}} +*/}} + +{{/* We'll return a slice so templates can safely use `range` */}} +{{ $jsAssets := slice }} + +{{/* Storing the reused mount warning message */}} +{{ $missing_file_warning := "%s not found. Check your mounts settings." }} +{{ $doc_version := site.Params.docs_version }} +{{/* Doc Search */}} +{{ if eq .Page.Layout "docs" -}} + {{ with resources.GetMatch "js/vendor/docsearch.min.js" }} + {{/* As this is a WIP, we don't customize the asset URL, + but we will after Hugo .74 and resources.Put (https://github.com/gohugoio/hugo/issues/7406): + {{ with resources.GetMatch "js/vendor/docsearch.min.js" }} + {{ $docsearch := . | resources.Put (printf /docs/%s/assets/js/vendor/docsearch.min.js" $doc_version) }} + {{ $jsAssets = $jsAssets | append $docsearch }} + */}} + {{ $jsAssets = $jsAssets | append . }} + {{ else }} + {{ warnf $missing_file_warning "docsearch.min.js" }} + {{ end }} +{{- end }} + +{{/* --- Bundle */}} +{{ $bundle := slice }} + +{{/* ----- Mounted from vendors */}} +{{- $vendor_assets := slice -}} +{{/* As we need to list the desired mounted files to: + 1. Check for missing mounts and throw an error + 2. Control order if need be + 3. Exclude docsearch (though there would be other ways) */}} +{{ $vendor_filenames := slice "clipboard.min.js" "anchor.min.js" "bs-custom-file-input.min.js" }} +{{ range $filename := $vendor_filenames }} + {{ with resources.GetMatch (print "js/vendor/" .) }} + {{ $vendor_assets = $vendor_assets | append . }} + {{ else }} + {{ warnf $missing_file_warning $filename }} + {{ end }} +{{ end }} +{{ with $vendor_assets }} + {{ $bundle = $bundle | append . }} +{{ end }} + +{{/* ----- Local assets */}} +{{ with resources.Match "js/*.js" }} + {{ $bundle = $bundle | append . }} +{{ end }} + +{{/* Above code should have populated $bundle slice */}} +{{ with $bundle }} + {{ $targetBundlePath := printf "/docs/%s/assets/js/docs.js" $doc_version }} + {{ $bundle_asset := $bundle | resources.Concat $targetBundlePath }} + {{ if eq hugo.Environment "production" }} + {{ $bundle_asset = $bundle_asset | resources.Minify }} + {{ end }} + {{ $jsAssets = $jsAssets | append $bundle_asset }} +{{ end }} + +{{ return $jsAssets }} diff --git a/site/layouts/partials/scripts.html b/site/layouts/partials/scripts.html index be30d7a10d..f19a9b5825 100644 --- a/site/layouts/partials/scripts.html +++ b/site/layouts/partials/scripts.html @@ -4,17 +4,7 @@ <script src="/docs/{{ .Site.Params.docs_version }}/dist/js/bootstrap.bundle.js"></script> {{- end }} -{{ if eq .Page.Layout "docs" -}} -<script src="/docs/{{ .Site.Params.docs_version }}/assets/js/vendor/docsearch.min.js"></script> -{{- end }} - -{{- $vendor := resources.Match "js/vendor/*.js" -}} -{{- $js := resources.Match "js/*.js" -}} -{{- $targetDocsJSPath := printf "/docs/%s/assets/js/docs.js" .Site.Params.docs_version -}} -{{- $docsJs := append $js $vendor | resources.Concat $targetDocsJSPath -}} - -{{- if eq hugo.Environment "production" -}} - {{- $docsJs = $docsJs | resources.Minify -}} -{{- end }} - -<script src="{{ $docsJs.Permalink | relURL }}"></script> +{{- $variant := cond (eq .Page.Layout "docs") "docs" "default" -}} +{{- range partialCached "func/get-js-assets" . $variant -}} + <script src="{{ .RelPermalink }}"></script> +{{- end -}} |