mirror of
https://github.com/gohugoio/hugo.git
synced 2025-09-01 22:42:45 +02:00
resources: Address Dart Sass deprecation of global built-in functions
See https://github.com/sass/dart-sass/releases/tag/1.80.0 Fixes #12961
This commit is contained in:
committed by
Bjørn Erik Pedersen
parent
72352f205a
commit
889308dd85
@@ -15,6 +15,7 @@ import (
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/babel"
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/cssjs"
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/tocss/dartsass"
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/tocss/sass"
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/tocss/scss"
|
||||
"github.com/gohugoio/hugo/tpl/internal"
|
||||
"github.com/gohugoio/hugo/tpl/internal/resourcehelpers"
|
||||
@@ -84,21 +85,13 @@ func (ns *Namespace) Sass(args ...any) (resource.Resource, error) {
|
||||
return nil, errors.New("must not provide more arguments than resource object and options")
|
||||
}
|
||||
|
||||
const (
|
||||
// Transpiler implementation can be controlled from the client by
|
||||
// setting the 'transpiler' option.
|
||||
// Default is currently 'libsass', but that may change.
|
||||
transpilerDart = "dartsass"
|
||||
transpilerLibSass = "libsass"
|
||||
)
|
||||
|
||||
var (
|
||||
r resources.ResourceTransformer
|
||||
m map[string]any
|
||||
targetPath string
|
||||
err error
|
||||
ok bool
|
||||
transpiler = transpilerLibSass
|
||||
transpiler = sass.TranspilerLibSass
|
||||
)
|
||||
|
||||
r, targetPath, ok = resourcehelpers.ResolveIfFirstArgIsString(args)
|
||||
@@ -113,15 +106,15 @@ func (ns *Namespace) Sass(args ...any) (resource.Resource, error) {
|
||||
if m != nil {
|
||||
if t, _, found := maps.LookupEqualFold(m, "transpiler"); found {
|
||||
switch t {
|
||||
case transpilerDart, transpilerLibSass:
|
||||
case sass.TranspilerDart, sass.TranspilerLibSass:
|
||||
transpiler = cast.ToString(t)
|
||||
default:
|
||||
return nil, fmt.Errorf("unsupported transpiler %q; valid values are %q or %q", t, transpilerLibSass, transpilerDart)
|
||||
return nil, fmt.Errorf("unsupported transpiler %q; valid values are %q or %q", t, sass.TranspilerLibSass, sass.TranspilerDart)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if transpiler == transpilerLibSass {
|
||||
if transpiler == sass.TranspilerLibSass {
|
||||
var options scss.Options
|
||||
if targetPath != "" {
|
||||
options.TargetPath = paths.ToSlashTrimLeading(targetPath)
|
||||
|
@@ -18,6 +18,8 @@ import (
|
||||
|
||||
qt "github.com/frankban/quicktest"
|
||||
"github.com/gohugoio/hugo/hugolib"
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/tocss/dartsass"
|
||||
"github.com/gohugoio/hugo/resources/resource_transformers/tocss/scss"
|
||||
)
|
||||
|
||||
func TestCopy(t *testing.T) {
|
||||
@@ -238,3 +240,45 @@ match /files/C*: 2|
|
||||
b.AssertFileContent("public/files/b.txt", "I am b.txt")
|
||||
b.AssertFileContent("public/files/C.txt", "I am C.txt")
|
||||
}
|
||||
|
||||
// Issue #12961
|
||||
func TestDartSassVars(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
if !scss.Supports() || !dartsass.Supports() {
|
||||
t.Skip()
|
||||
}
|
||||
|
||||
files := `
|
||||
-- hugo.toml --
|
||||
disableKinds = ['page','section','rss','sitemap','taxonomy','term']
|
||||
-- layouts/index.html --
|
||||
{{ $opts := dict "transpiler" "dartsass" "outputStyle" "compressed" "vars" (dict "color" "red") }}
|
||||
{{ with resources.Get "dartsass.scss" | css.Sass $opts }}
|
||||
{{ .Content }}
|
||||
{{ end }}
|
||||
|
||||
{{ $opts := dict "transpiler" "libsass" "outputStyle" "compressed" "vars" (dict "color" "blue") }}
|
||||
{{ with resources.Get "libsass.scss" | css.Sass $opts }}
|
||||
{{ .Content }}
|
||||
{{ end }}
|
||||
-- assets/dartsass.scss --
|
||||
@use "hugo:vars" as v;
|
||||
.dartsass {
|
||||
color: v.$color;
|
||||
}
|
||||
-- assets/libsass.scss --
|
||||
@import "hugo:vars";
|
||||
.libsass {
|
||||
color: $color;
|
||||
}
|
||||
`
|
||||
|
||||
b := hugolib.Test(t, files, hugolib.TestOptWarn())
|
||||
|
||||
b.AssertFileContent("public/index.html",
|
||||
".dartsass{color:red}",
|
||||
".libsass{color:blue}",
|
||||
)
|
||||
b.AssertLogContains("! WARN Dart Sass: hugo:vars")
|
||||
}
|
||||
|
Reference in New Issue
Block a user