Hugo Release 0.84.0
Config Revamp
Hugo 0.84.0: Deep merge of theme configuration, config dir support now also in themes/modules, HTTP header support in getJSON, and more.
June 18, 2021
Go to Hugo Releases for the release downloads.
This release brings several configuration fixes and improvements that will be especially useful for themes.
One of the most common complaint from Hugo theme owners/users has been about the configuration handling. Hugo has up until now only performed a shallow merge of theme
params
into the configuration.With that, given this example from a theme configuration:
[params] [params.colours] blue="#337DFF" green="#68FF33" red="#FF3358"
If you would like to use the above theme, but want a different shade of red, you earlier had to copy the entire block, even the colours you’re totally happy with. This was painful even the simplest setup.
Now you can just override the
params
keys you want to change, e.g.:[params] [params.colours] red="#fc0f03"
For more information, and especially about the way you can opt out of the above behaviour, see Merge Configuration from Themes.
Themes now support the config directory
Now both the project and themes/modules can store its configuration in both the top level config file (e.g.
config.toml
) or in theconfig
directory. See Configuration Directory.HTTP headers in getJSON/getCSV
getJSON
now supports custom HTTP headers. This has been a big limitation in Hugo, especially considering the Authorization header.We have updated the internal Instagram shortcode to pass the access token in a header:
{{ $hideCaption := cond (eq (.Get 1) "hidecaption") "1" "0" }} {{ $headers := dict "Authorization" (printf "Bearer %s" $accessToken) }} {{ with getJSON "https://graph.facebook.com/v8.0/instagram_oembed/?url=https://instagram.com/p/" $id "/&hidecaption=" $hideCaption $headers }} {{ .html | safeHTML }} {{ end }}
Also see the discussion this issue about the access token above.
Sometime, especially when creating themes, it is useful to be able to let the user decide if an error situation is critical enough to fail the build. The new
erroridf
producesERROR
log statements that can be toggled off:{{ erroridf "some-custom-id" "Some error message." }}
Will log:
ERROR: Some error message. If you feel that this should not be logged as an ERROR, you can ignore it by adding this to your site config: ignoreErrors = ["some-custom-id"]
This release represents 46 contributions by 11 contributors to the main Hugo code base.@bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @jmooring, @satotake, and @Seirdy for their ongoing contributions. And a big thanks to @digitalcraftsman for his relentless work on keeping the themes site in pristine condition.
Many have also been busy writing and fixing the documentation in hugoDocs, which has received 20 contributions by 10 contributors. A special thanks to @salim-b, @bep, @thomasjsn, and @lucasew for their work on the documentation site.
Hugo now has:
52487+ stars 432+ contributors 370+ themes