Allow multiple plugins in the PostCSS options map
authorJoe Mooring <joe.mooring@veriphor.com>
Sat, 9 Oct 2021 05:34:08 +0000 (22:34 -0700)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 10 Oct 2021 09:11:43 +0000 (11:11 +0200)
Usage:
{{ $options := dict "use" "autoprefixer postcss-color-alpha" }}
{{ $style := resources.Get "main.css" | resources.PostCSS $options }}

Fixes #9015

docs/content/en/hugo-pipes/postcss.md
resources/resource_transformers/postcss/postcss.go

index 391868c590257b070ef572f26ebd5f9515753c02..2a119258ee0d0f7fa36d586f910d4ab290916475 100755 (executable)
@@ -15,12 +15,10 @@ sections_weight: 40
 draft: false
 ---
 
-
 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.
 
-
 ```go-html-template
 {{ $css := resources.Get "css/main.css" }}
 {{ $style := $css | resources.PostCSS }}
@@ -31,6 +29,7 @@ Hugo Pipe's PostCSS requires the `postcss-cli` JavaScript package to be installe
 
 If you are using the Hugo Snap package, PostCSS and plugin(s) need to be installed locally within your Hugo site directory, e.g., `npm install postcss-cli` without the `-g` flag.
 {{% /note %}}
+
 ### Options
 
 config [string]
@@ -48,7 +47,7 @@ Hugo will look for imports relative to the module mount and will respect theme o
 _If no configuration file is used:_
 
 use [string]
-: List of PostCSS plugins to use
+: Space-delimited list of PostCSS plugins to use
 
 parser [string]
 : Custom PostCSS parser
@@ -60,7 +59,11 @@ syntax [string]
 : Custom postcss syntax
 
 ```go-html-template
-{{ $style := resources.Get "css/main.css" | resources.PostCSS (dict "config" "customPostCSS.js" "noMap" true) }}
+{{ $options := dict "config" "customPostCSS.js" "noMap" true }}
+{{ $style := resources.Get "css/main.css" | resources.PostCSS $options }}
+
+{{ $options := dict "use" "autoprefixer postcss-color-alpha" }}
+{{ $style := resources.Get "css/main.css" | resources.PostCSS $options }}
 ```
 
 ## Check Hugo Environment from postcss.config.js
index 5fcadd9370ef28c4fb3459dbb9699129dc3171b0..8104d03360e58ce5e9cdb6aea0caf450f875ef31 100644 (file)
@@ -113,7 +113,8 @@ func (opts Options) toArgs() []string {
                args = append(args, "--no-map")
        }
        if opts.Use != "" {
-               args = append(args, "--use", opts.Use)
+               args = append(args, "--use")
+               args = append(args, strings.Fields(opts.Use)...)
        }
        if opts.Parser != "" {
                args = append(args, "--parser", opts.Parser)