summaryrefslogtreecommitdiffstats
path: root/resources/resource_transformers/tocss/dartsass/client.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-12-19 18:49:02 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-12-20 19:36:30 +0100
commit41a080b26877a737e74444f83fe54c46a9c9f6bc (patch)
tree00fa04128dc9eff07e28c0b36dd97d3fbcc58dd9 /resources/resource_transformers/tocss/dartsass/client.go
parent9a215d6950e6705f9109497e9f38cc3844172612 (diff)
tocss: Add vars option
This commit adds a new `vars` option to both the Sass transpilers (Dart Sass and Libsass). This means that you can pass a map with key/value pairs to the transpiler: ```handlebars {{ $vars := dict "$color1" "blue" "$color2" "green" "$font_size" "24px" }} {{ $cssOpts := (dict "transpiler" "dartsass" "outputStyle" "compressed" "vars" $vars ) }} {{ $r := resources.Get "scss/main.scss" | toCSS $cssOpts }} ``` And the the variables will be available in the `hugo:vars` namespace. Example usage for Dart Sass: ```scss @use "hugo:vars" as v; p { color: v.$color1; font-size: v.$font_size; } ``` Note that Libsass does not support the `use` keyword, so you need to `import` them as global variables: ```scss @import "hugo:vars"; p { color: $color1; font-size: $font_size; } ``` Hugo will: * Add a missing leading `$` for the variable names if needed. * Wrap the values in `unquote('VALUE')` (Sass built-in) to get proper handling of identifiers vs other strings. This means that you can pull variables directly from e.g. the site config: ```toml [params] [params.sassvars] color1 = "blue" color2 = "green" font_size = "24px" image = "images/hero.jpg" ``` ```handlebars {{ $vars := site.Params.sassvars}} {{ $cssOpts := (dict "transpiler" "dartsass" "outputStyle" "compressed" "vars" $vars ) }} {{ $r := resources.Get "scss/main.scss" | toCSS $cssOpts }} ``` Fixes #10555
Diffstat (limited to 'resources/resource_transformers/tocss/dartsass/client.go')
-rw-r--r--resources/resource_transformers/tocss/dartsass/client.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/resources/resource_transformers/tocss/dartsass/client.go b/resources/resource_transformers/tocss/dartsass/client.go
index f5f42a6dc..49cafb52d 100644
--- a/resources/resource_transformers/tocss/dartsass/client.go
+++ b/resources/resource_transformers/tocss/dartsass/client.go
@@ -93,6 +93,7 @@ func (c *Client) toCSS(args godartsass.Args, src io.Reader) (godartsass.Result,
var res godartsass.Result
in := helpers.ReaderToString(src)
+
args.Source = in
res, err := c.transpiler.Execute(args)
@@ -130,6 +131,11 @@ type Options struct {
// If enabled, sources will be embedded in the generated source map.
SourceMapIncludeSources bool
+
+ // Vars will be available in 'hugo:vars', e.g:
+ // @use "hugo:vars";
+ // $color: vars.$color;
+ Vars map[string]string
}
func decodeOptions(m map[string]any) (opts Options, err error) {