mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-19 00:14:41 +00:00
Improve versioning and SRI for dependencies
- Parameterize JS and CSS versions (no longer hardcoded) - Highlight.js version moved from `config.toml` to `data/sri.toml` - SRI applied to Highlight.js
This commit is contained in:
1 parent
4e5994a43d
commit
32252083fa
5 files changed
+68
-48
No files matched your search
+40
-14
@@ -1,16 +1,42 @@
|
|||||||
# How to update an entry:
|
# Versioning and Subresource Integrity (SRI) for Academic's JavaScript and CSS dependencies
|
||||||
#
|
|
||||||
# echo -n "sha512-" && curl --silent "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML" | openssl dgst -sha512 -binary | openssl enc -base64 -A
|
|
||||||
|
|
||||||
[js]
|
# When updating the version of an asset below, please also update the corresponding SRI.
|
||||||
imagesLoaded = "sha512-umsR78NN0D23AzgoZ11K7raBD+R6hqKojyBZs1w8WvYlsI+QuKRGBx3LFCwhatzBunCjDuJpDHwxD13sLMbpRA=="
|
# How to update the SRI for an entry:
|
||||||
mathJax = "sha512-tOav5w1OjvsSJzePRtt2uQPFwBoHt1VZcUq8l8nm5284LEKE9FSJBQryzMBzHxY5P0zRdNqEcpLIRVYFNgu1jw=="
|
# echo -n "sha512-" && curl --silent "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML" | openssl dgst -sha512 -binary | openssl enc -base64 -A
|
||||||
bootstrap = "sha512-iztkobsvnjKfAtTNdHkGVjAYTrrtlC7mGp/54c40wowO7LhURYl3gVzzcEqGl/qKXQltJ2HwMrdLcNUdo+N/RQ=="
|
# Or, the SRI for the appropriate asset can be copied from https://cdnjs.com/ .
|
||||||
isotope = "sha512-VDBOIlDbuC4VWxGJNmuFRQ0Li0SKkDpmGyuhAG5LTDLd/dJ/S0WMVxriR2Y+CyPL5gzjpN4f/6iqWVBJlht0tQ=="
|
|
||||||
jQuery = "sha512-3P8rXCuGJdNZOnUx/03c1jOTnMn3rP63nBip5gOP2qmUh5YAdVAvFZ1E+QLZZbC1rtMrQb+mah3AfYW11RUrWA=="
|
|
||||||
autotrack = "sha512-HUmooslVKj4m6OBu0OgzjXXr+QuFYy/k7eLI5jdeEy/F4RSgMn6XRWRGkFi5IFaFgy7uFTkegp3Z0XnJf3Jq+g=="
|
|
||||||
|
|
||||||
[css]
|
# JavaScript
|
||||||
bootstrap = "sha512-6MXa8B6uaO18Hid6blRMetEIoPqHf7Ux1tnyIQdpt9qI5OACx7C+O3IVTr98vwGnlcg0LOLa02i9Y1HpVhlfiw=="
|
|
||||||
academicons = "sha512-NThgw3XKQ1absAahW6to7Ey42uycrVvfNfyjqcFNgCmOCQ5AR4AO0SiXrN+8ZtYeappp56lk1WtvjVmEa+VR6A=="
|
[js.jQuery]
|
||||||
fontAwesome = "sha512-SfTiTlX6kk+qitfevl/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+/Sw=="
|
version = "3.2.1"
|
||||||
|
sri = "sha512-3P8rXCuGJdNZOnUx/03c1jOTnMn3rP63nBip5gOP2qmUh5YAdVAvFZ1E+QLZZbC1rtMrQb+mah3AfYW11RUrWA=="
|
||||||
|
[js.bootstrap]
|
||||||
|
version = "3.3.7"
|
||||||
|
sri = "sha512-iztkobsvnjKfAtTNdHkGVjAYTrrtlC7mGp/54c40wowO7LhURYl3gVzzcEqGl/qKXQltJ2HwMrdLcNUdo+N/RQ=="
|
||||||
|
[js.highlight]
|
||||||
|
version = "9.12.0"
|
||||||
|
sri = "sha256-/BfiIkHlHoVihZdc6TFuj7MmJ0TWcWsMXkeDFwhi0zw="
|
||||||
|
[js.mathJax]
|
||||||
|
version = "2.7.1"
|
||||||
|
sri = "sha512-tOav5w1OjvsSJzePRtt2uQPFwBoHt1VZcUq8l8nm5284LEKE9FSJBQryzMBzHxY5P0zRdNqEcpLIRVYFNgu1jw=="
|
||||||
|
[js.isotope]
|
||||||
|
version = "3.0.4"
|
||||||
|
sri = "sha512-VDBOIlDbuC4VWxGJNmuFRQ0Li0SKkDpmGyuhAG5LTDLd/dJ/S0WMVxriR2Y+CyPL5gzjpN4f/6iqWVBJlht0tQ=="
|
||||||
|
[js.imagesLoaded]
|
||||||
|
version = "4.1.3"
|
||||||
|
sri = "sha512-umsR78NN0D23AzgoZ11K7raBD+R6hqKojyBZs1w8WvYlsI+QuKRGBx3LFCwhatzBunCjDuJpDHwxD13sLMbpRA=="
|
||||||
|
[js.autotrack]
|
||||||
|
version = "2.4.1"
|
||||||
|
sri = "sha512-HUmooslVKj4m6OBu0OgzjXXr+QuFYy/k7eLI5jdeEy/F4RSgMn6XRWRGkFi5IFaFgy7uFTkegp3Z0XnJf3Jq+g=="
|
||||||
|
|
||||||
|
# CSS
|
||||||
|
|
||||||
|
[css.bootstrap]
|
||||||
|
version = "3.3.7"
|
||||||
|
sri = "sha512-6MXa8B6uaO18Hid6blRMetEIoPqHf7Ux1tnyIQdpt9qI5OACx7C+O3IVTr98vwGnlcg0LOLa02i9Y1HpVhlfiw=="
|
||||||
|
[css.fontAwesome]
|
||||||
|
version = "4.7.0"
|
||||||
|
sri = "sha512-SfTiTlX6kk+qitfevl/7LibUOeJWlt9rbyDn92a1DqWOw9vWG2MFoays0sgObmWazO5BQPiFucnnEAjpAB+/Sw=="
|
||||||
|
[css.academicons]
|
||||||
|
version = "1.8.1"
|
||||||
|
sri = "sha512-NThgw3XKQ1absAahW6to7Ey42uycrVvfNfyjqcFNgCmOCQ5AR4AO0SiXrN+8ZtYeappp56lk1WtvjVmEa+VR6A=="
|
||||||
@@ -82,21 +82,14 @@ defaultContentLanguageInSubdir = false
|
|||||||
#
|
#
|
||||||
# Example: highlight_style = "github-gist"
|
# Example: highlight_style = "github-gist"
|
||||||
#
|
#
|
||||||
# highlight_version
|
# For the list of supported languages and styles, see:
|
||||||
# Choose the version of highlight.js you want. Setting this
|
|
||||||
# option in a page's preamble has no effect.
|
|
||||||
#
|
|
||||||
# Example: highlight_version = "9.9.0"
|
|
||||||
#
|
|
||||||
# For the list of supported languages, styles, and versions, see:
|
|
||||||
# https://cdnjs.com/libraries/highlight.js/
|
# https://cdnjs.com/libraries/highlight.js/
|
||||||
#
|
#
|
||||||
# For more info on the highlighting options, see:
|
# For more info on the highlighting options, see:
|
||||||
# https://gcushen.github.io/hugo-academic-demo/post/writing-markdown-latex/#highlighting-options
|
# https://sourcethemes.com/academic/post/writing-markdown-latex/#highlighting-options
|
||||||
highlight = true
|
highlight = true
|
||||||
highlight_languages = []
|
highlight_languages = []
|
||||||
# highlight_style = "github"
|
# highlight_style = "github"
|
||||||
# highlight_version = "9.9.0"
|
|
||||||
|
|
||||||
# Enable native social sharing buttons?
|
# Enable native social sharing buttons?
|
||||||
sharing = true
|
sharing = true
|
||||||
|
|||||||
@@ -113,7 +113,6 @@ option | type | description | config.toml
|
|||||||
`highlight` | boolean | enable/disable highlighting | yes | yes
|
`highlight` | boolean | enable/disable highlighting | yes | yes
|
||||||
`highlight_languages` | slice | choose additional languages | yes | yes
|
`highlight_languages` | slice | choose additional languages | yes | yes
|
||||||
`highlight_style` | string | choose a highlighting style | yes | no
|
`highlight_style` | string | choose a highlighting style | yes | no
|
||||||
`highlight_version` | string | choose the highlight.js version | yes | no
|
|
||||||
|
|
||||||
|
|
||||||
#### Option `highlight`
|
#### Option `highlight`
|
||||||
@@ -157,10 +156,6 @@ If you don't want to change the default style that ships with Academic but you d
|
|||||||
|
|
||||||
The `highlight_style` option is only recognized when set in `config.toml`. Setting `highlight_style` in your page's preamble has no effect.
|
The `highlight_style` option is only recognized when set in `config.toml`. Setting `highlight_style` in your page's preamble has no effect.
|
||||||
|
|
||||||
#### Option `highlight_version`
|
|
||||||
|
|
||||||
The `highlight_version` option, as the name implies, allows you to select the version of highlight.js you want to use. The default value is "9.9.0". The `highlight_version` option is only recognized when set in `config.toml`. Setting `highlight_version` in your page's preamble has no effect.
|
|
||||||
|
|
||||||
## Twitter tweet
|
## Twitter tweet
|
||||||
|
|
||||||
To include a single tweet, pass the tweet’s ID from the tweet's URL as parameter to the shortcode:
|
To include a single tweet, pass the tweet’s ID from the tweet's URL as parameter to the shortcode:
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
|
{{ $js := .Site.Data.sri.js }}
|
||||||
{{ if not .Site.Params.disable_sri }}
|
{{ if not .Site.Params.disable_sri }}
|
||||||
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.jQuery | safeHTML }}
|
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery/%s/jquery.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $js.jQuery.version $js.jQuery.sri | safeHTML }}
|
||||||
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.3/imagesloaded.pkgd.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.imagesLoaded | safeHTML }}
|
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/%s/imagesloaded.pkgd.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $js.imagesLoaded.version $js.imagesLoaded.sri | safeHTML }}
|
||||||
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.bootstrap | safeHTML }}
|
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/%s/js/bootstrap.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $js.bootstrap.version $js.bootstrap.sri | safeHTML }}
|
||||||
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.4/isotope.pkgd.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.isotope | safeHTML }}
|
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/%s/isotope.pkgd.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $js.isotope.version $js.isotope.sri | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/{{- $js.jQuery.version -}}/jquery.min.js"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/4.1.3/imagesloaded.pkgd.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.imagesloaded/{{- $js.imagesLoaded.version -}}/imagesloaded.pkgd.min.js"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/{{- $js.bootstrap.version -}}/js/bootstrap.min.js"></script>
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.4/isotope.pkgd.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery.isotope/{{- $js.isotope.version -}}/isotope.pkgd.min.js"></script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
<script src="{{ "/js/hugo-academic.js" | relURL }}"></script>
|
<script src="{{ "/js/hugo-academic.js" | relURL }}"></script>
|
||||||
{{ range .Site.Params.custom_js }}
|
{{ range .Site.Params.custom_js }}
|
||||||
@@ -16,8 +17,12 @@
|
|||||||
|
|
||||||
<!-- Code highlighting -->
|
<!-- Code highlighting -->
|
||||||
{{ if $.Scratch.Get "highlight_enabled" }}
|
{{ if $.Scratch.Get "highlight_enabled" }}
|
||||||
{{ $v := .Site.Params.highlight_version | default "9.9.0" }}
|
{{ $v := $js.highlight.version }}
|
||||||
|
{{ if not .Site.Params.disable_sri }}
|
||||||
|
{{ printf "<script src=\"//cdnjs.cloudflare.com/ajax/libs/highlight.js/%s/highlight.min.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $v $js.highlight.sri | safeHTML }}
|
||||||
|
{{ else }}
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/highlight.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/highlight.min.js"></script>
|
||||||
|
{{ end }}
|
||||||
|
|
||||||
{{ range .Site.Params.highlight_languages }}
|
{{ range .Site.Params.highlight_languages }}
|
||||||
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/languages/{{ . }}.min.js"></script>
|
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/languages/{{ . }}.min.js"></script>
|
||||||
@@ -40,9 +45,9 @@
|
|||||||
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']] } });
|
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ['\\(','\\)']] } });
|
||||||
</script>
|
</script>
|
||||||
{{ if not .Site.Params.disable_sri }}
|
{{ if not .Site.Params.disable_sri }}
|
||||||
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.mathJax | safeHTML }}
|
{{ printf "<script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/%s/MathJax.js?config=TeX-AMS_CHTML\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $js.mathJax.version $js.mathJax.sri | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<script async src="//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML"></script>
|
<script async src="//cdnjs.cloudflare.com/ajax/libs/mathjax/{{- $js.mathJax.version -}}/MathJax.js?config=TeX-AMS_CHTML"></script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
{{ with .Site.Params.name }}<meta name="author" content="{{ . }}">{{ end }}
|
{{ with .Site.Params.name }}<meta name="author" content="{{ . }}">{{ end }}
|
||||||
{{ with .Site.Params.role }}<meta name="description" content="{{ . }}">{{ end }}
|
{{ with .Site.Params.role }}<meta name="description" content="{{ . }}">{{ end }}
|
||||||
|
|
||||||
|
{{ $sri := .Site.Data.sri }}
|
||||||
{{/* Default to enabling highlighting, but allow the user to override it in .Params or .Site.Params.
|
{{/* Default to enabling highlighting, but allow the user to override it in .Params or .Site.Params.
|
||||||
Use $.Scratch to store "highlight_enabled", so that we can read it again in footer.html. */}}
|
Use $.Scratch to store "highlight_enabled", so that we can read it again in footer.html. */}}
|
||||||
{{ $.Scratch.Set "highlight_enabled" true }}
|
{{ $.Scratch.Set "highlight_enabled" true }}
|
||||||
@@ -19,7 +20,7 @@
|
|||||||
{{ $.Scratch.Set "highlight_enabled" .Site.Params.highlight }}
|
{{ $.Scratch.Set "highlight_enabled" .Site.Params.highlight }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if $.Scratch.Get "highlight_enabled" }}
|
{{ if $.Scratch.Get "highlight_enabled" }}
|
||||||
{{ $v := .Site.Params.highlight_version | default "9.9.0" }}
|
{{ $v := $sri.js.highlight.version }}
|
||||||
{{ with .Site.Params.highlight_style }}
|
{{ with .Site.Params.highlight_style }}
|
||||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/styles/{{ . }}.min.css">
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ $v }}/styles/{{ . }}.min.css">
|
||||||
{{ else }}
|
{{ else }}
|
||||||
@@ -27,13 +28,13 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ if not .Site.Params.disable_sri }}
|
{{ if not .Site.Params.disable_sri }}
|
||||||
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" .Site.Data.sri.css.bootstrap | safeHTML }}
|
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/%s/css/bootstrap.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" $sri.css.bootstrap.version $sri.css.bootstrap.sri | safeHTML }}
|
||||||
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/academicons/1.8.1/css/academicons.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" .Site.Data.sri.css.academicons | safeHTML }}
|
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/academicons/%s/css/academicons.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" $sri.css.academicons.version $sri.css.academicons.sri | safeHTML }}
|
||||||
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" .Site.Data.sri.css.fontAwesome | safeHTML }}
|
{{ printf "<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/%s/css/font-awesome.min.css\" integrity=\"%s\" crossorigin=\"anonymous\">" $sri.css.fontAwesome.version $sri.css.fontAwesome.sri | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/{{- $sri.css.bootstrap.version -}}/css/bootstrap.min.css">
|
||||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/academicons/1.8.1/css/academicons.min.css">
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/academicons/{{- $sri.css.academicons.version -}}/css/academicons.min.css">
|
||||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/{{- $sri.css.fontAwesome.version -}}/css/font-awesome.min.css">
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{/* We cannot use SRI with Google Fonts because the CSS is dynamically generated according to the user agent */}}
|
{{/* We cannot use SRI with Google Fonts because the CSS is dynamically generated according to the user agent */}}
|
||||||
{{- partial "css/parse_theme.css" . -}}
|
{{- partial "css/parse_theme.css" . -}}
|
||||||
@@ -57,9 +58,9 @@
|
|||||||
</script>
|
</script>
|
||||||
<script async src="//www.google-analytics.com/analytics.js"></script>
|
<script async src="//www.google-analytics.com/analytics.js"></script>
|
||||||
{{ if not .Site.Params.disable_sri }}
|
{{ if not .Site.Params.disable_sri }}
|
||||||
{{ printf "<script async src=\"https://cdnjs.cloudflare.com/ajax/libs/autotrack/2.4.1/autotrack.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" .Site.Data.sri.js.autotrack | safeHTML }}
|
{{ printf "<script async src=\"https://cdnjs.cloudflare.com/ajax/libs/autotrack/%s/autotrack.js\" integrity=\"%s\" crossorigin=\"anonymous\"></script>" $sri.js.autotrack.version $sri.js.autotrack.sri | safeHTML }}
|
||||||
{{ else }}
|
{{ else }}
|
||||||
<script async src="//cdnjs.cloudflare.com/ajax/libs/autotrack/2.4.1/autotrack.js"></script>
|
<script async src="//cdnjs.cloudflare.com/ajax/libs/autotrack/{{- $sri.js.autotrack.version -}}/autotrack.js"></script>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user