{{/* 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 -}} {{- 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 and/or run `npm i`." }} {{ $doc_version := site.Params.docs_version }} {{/* --- 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 "anchor.min.js" "clipboard.min.js" }} {{ range $filename := $vendor_filenames }} {{ with resources.GetMatch (print "js/vendor/" .) }} {{ $vendor_assets = $vendor_assets | append . }} {{ else }} {{ errorf $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 := path.Join "/docs" $doc_version "assets/js/docs.js" }} {{ $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 }}