Hugo 0.56.0 is filled with improvements, but there are two main headliners: Hugo Modules and Hugo Deploy.
Hugo Deploy is implemented by @vangent and brings built-in deployment support for GCS, S3, or Azure using the Hugo CLI. See the Hugo Deploy Documentation for more information.
Hugo Modules is very much a community effort on the design and specification side, but @bep has driven the implementation. Some notes about what all of this is about:
A new module configuration section where you can import almost anything. You can configure both your own file mounts and the file mounts of the modules you import. This is the new recommended way of configuring what you earlier put in configDir, staticDir etc. And it also allows you to mount folders in non-Hugo-projects, e.g. the SCSS folder in the Bootstrap GitHub project.
A module consists of a set of mounts to the standard 7 component types in Hugo: static, content, layouts, data, assets, i18n, and archetypes. Yes, Theme Components can now include content, which should be very useful, especially in bigger multilingual projects.
Modules not in your local file cache will be downloaded automatically and even “hot replaced” while the server is running.
Hugo Modules supports and encourages semver versioned modules, and uses the minimal version selection algorithm to resolve versions.
A new set of CLI commands are provided to manage all of this: hugo mod init, hugo mod get, hugo mod graph, hugo mod tidy, and hugo mod vendor.
Hugo Modules is powered by Go Modules.
This is all very much brand new and there are only a few example projects around:
https://github.com/bep/docuapi is a theme that has been ported to Hugo Modules while testing this feature. It is a good example of a non-Hugo-project mounted into Hugo’s folder structure. It even shows a JS Bundler implementation in regular Go templates.
This release represents 104 contributions by 19 contributors to the main Hugo code base.
@bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @vangent, @niklasfasching, and @coliff for their ongoing contributions.
And a big thanks to @digitalcraftsman and @onedrawingperday for their relentless work on keeping the themes site in pristine condition and to @kaushalmodi for his great work on the documentation site.
Many have also been busy writing and fixing the documentation in hugoDocs,
which has received 48 contributions by 37 contributors. A special thanks to @davidsneighbour, @bep, @BCNelson, and @coliff for their work on the documentation site.
We have removed the “auto theme namespacing” of params from theme configuration. This was an undocumented and hidden feature that wasn’t useful in practice.
We have revised and improved the symlinks support in Hugo: In earlier versions, symlinks were only fully supported for the content folders. With the introduction of the new very flexible file mounts, with content support even for what we have traditionally named “themes”, we needed a more precise definition of symlink support in Hugo:
Symlinks are not supported outside of the main project ((the project you run hugo or hugo server from).
In the main project static mounts, only symlinks to files are supported.
In all other mounts in the main project, both file and directory symlinks are allowed.