Gopher
ASSET MANAGEMENT

PostCSS

Hugo Pipes can process CSS files with PostCSS.

Any asset file can be processed using resources.PostCSS which takes for argument the resource object and a slice of options listed below.

The resource will be processed using the project’s or theme’s own postcss.config.js or any file set with the config option.

{{ $css := resources.Get "css/main.css" }}
{{ $style := $css | resources.PostCSS }}

Options  

config [string]
Path to the PostCSS configuration file
noMap [bool]
Default is true. Disable the default inline sourcemaps
inlineImports [bool] New in v0.66.0
Default is false. Enable inlining of @import statements. It does so recursively, but will only import a file once. URL imports (e.g. @import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');) and imports with media queries will be ignored. Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file. Hugo will look for imports relative to the module mount and will respect theme overrides.

If no configuration file is used:

use [string]
List of PostCSS plugins to use
parser [string]
Custom PostCSS parser
stringifier [string]
Custom PostCSS stringifier
syntax [string]
Custom postcss syntax
{{ $style := resources.Get "css/main.css" | resources.PostCSS (dict "config" "customPostCSS.js" "noMap" true) }}

Check Hugo Environment from postcss.config.js  

New in v0.66.0

The current Hugo environment name (set by --environment or in config or OS environment) is available in the Node context, which allows constructs like this:

module.exports = {
  plugins: [
    require('autoprefixer'),
    ...process.env.HUGO_ENVIRONMENT === 'production'
      ? [purgecss]
      : []
  ]
}