hugo/docs/content/en/news/0.43-relnotes/index.md

9.6 KiB


date: 2018-07-09 title: "And Now: Hugo Pipes!" description: "Hugo 0.43 adds a powerful and simple to use assets pipeline with SASS/SCSS and much, much more …" categories: ["Releases"]

Hugo 0.43 adds a powerful and very simple to use Assets Pipeline with SASS and SCSS with source map support, PostCSS and minification and fingerprinting and Subresource Integrity and ... much more. Oh, did we mention that you can now do ad-hoc image processing and execute text resources as Go templates?

An example pipeline:

{{ $styles := resources.Get "scss/main.scss" | toCSS | postCSS | minify | fingerprint }}
<link rel="stylesheet" href="{{ $styles.Permalink }}" integrity="{{ $styles.Data.Integrity }}" media="screen">

To me, the above is beautiful in its speed and simplicity. It could be printed on a t-shirt. I wrote in the Hugo Birthday Post some days ago about the value of a single binary with native and fast implementations. I should have added simplicity as a keyword. There seem to be a misconception that all of this needs to be hard and painful.

New functions to create Resource objects:

  • resources.Get
  • resources.FromString: Create a Resource from a string.

New Resource transformation funcs:

  • resources.ToCSS: Compile SCSS or SASS into CSS.
  • resources.PostCSS: Process your CSS with PostCSS. Config file support (project or theme or passed as an option).
  • resources.Minify: Currently supports css, js, json, html, svg, xml.
  • resources.Fingerprint: Creates a fingerprinted version of the given Resource with Subresource Integrity.
  • resources.Concat: Concatenates a list of Resource objects. Think of this as a poor man's bundler.
  • resources.ExecuteAsTemplate: Parses and executes the given Resource and data context (e.g. .Site) as a Go template.

I, @bep, implemented this in dea71670. We will work hard to get the documentation up to date, but follow the links above for details, and also see this demo project.

This release represents 35 contributions by 7 contributors to the main Hugo code base. @bep leads the Hugo development with a significant amount of contributions, but also a big shoutout to @anthonyfok, @openscript, and @caarlos0 for their ongoing contributions. And a big thanks to @digitalcraftsman for his 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 11 contributions by 5 contributors. A special thanks to @bep, @danrl, @regisphilibert, and @digitalcraftsman for their work on the documentation site.

Hugo now has:

Notes

  • Replace deprecated {Get,}ByPrefix with {Get,}Match 42ed6025 @anthonyfok
  • Hugo is now released with two binary version: One with and one without SCSS/SASS support. At the time of writing, this is only available in the binaries on the GitHub release page. Brew, Snap builds etc. will come. But note that you only need the extended version if you want to edit SCSS. For your CI server, or if you don't use SCSS, you will most likely want the non-extended version.

Enhancements

Templates

Core

Other

Fixes