]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
dartsass: Add silenceDeprecations option
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 18 Nov 2024 09:04:37 +0000 (10:04 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Mon, 18 Nov 2024 12:41:12 +0000 (13:41 +0100)
Fixes #13045

docs/content/en/functions/css/Sass.md
go.mod
go.sum
hugolib/integrationtest_builder.go
resources/resource_transformers/tocss/dartsass/client.go
resources/resource_transformers/tocss/dartsass/dartsass_integration_test.go
resources/resource_transformers/tocss/dartsass/transform.go

index 328037bb96b63f1f9451f7d7e73c990a81f7760d..793c0c1ac2fb3ca23073745fcfb50907365e207e 100644 (file)
@@ -86,6 +86,9 @@ includePaths
 {{ end }}
 ```
 
+silenceDeprecations
+: (`slice`) {{< new-in 0.139.0 >}} A slice of deprecation IDs to silence. The deprecation IDs are printed to in the warning message, e.g "import" in `WARN  Dart Sass: DEPRECATED [import] ...`. This is for Dart Sass only.
+
 ## Dart Sass
 
 The extended version of Hugo includes [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
diff --git a/go.mod b/go.mod
index c19e8da34c651c6fcf553429c81160372579acce..82a59ac91ca9f3d35ad549b533e2445abe1e4b51 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -10,7 +10,7 @@ require (
        github.com/bep/debounce v1.2.0
        github.com/bep/gitmap v1.6.0
        github.com/bep/goat v0.5.0
-       github.com/bep/godartsass/v2 v2.2.0
+       github.com/bep/godartsass/v2 v2.3.0
        github.com/bep/golibsass v1.2.0
        github.com/bep/gowebp v0.3.0
        github.com/bep/helpers v0.5.0
diff --git a/go.sum b/go.sum
index 0ba28ce4dfe866bd401a398bb2b657c61a60ddcd..a3af71aee0455aa1dae07dde43c26fa6ea766a3d 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -131,6 +131,8 @@ github.com/bep/goat v0.5.0 h1:S8jLXHCVy/EHIoCY+btKkmcxcXFd34a0Q63/0D4TKeA=
 github.com/bep/goat v0.5.0/go.mod h1:Md9x7gRxiWKs85yHlVTvHQw9rg86Bm+Y4SuYE8CTH7c=
 github.com/bep/godartsass/v2 v2.2.0 h1:3hO9Dt4BOnxkKmRxc+OpoKVFrDvBycpSCXEdElVAMVI=
 github.com/bep/godartsass/v2 v2.2.0/go.mod h1:AcP8QgC+OwOXEq6im0WgDRYK7scDsmZCEW62o1prQLo=
+github.com/bep/godartsass/v2 v2.3.0 h1:gEMyq/bNn4hxpUSwy/NKyOTqPqVh3AedhMHvQR+x0kU=
+github.com/bep/godartsass/v2 v2.3.0/go.mod h1:AcP8QgC+OwOXEq6im0WgDRYK7scDsmZCEW62o1prQLo=
 github.com/bep/golibsass v1.2.0 h1:nyZUkKP/0psr8nT6GR2cnmt99xS93Ji82ZD9AgOK6VI=
 github.com/bep/golibsass v1.2.0/go.mod h1:DL87K8Un/+pWUS75ggYv41bliGiolxzDKWJAq3eJ1MA=
 github.com/bep/gowebp v0.3.0 h1:MhmMrcf88pUY7/PsEhMgEP0T6fDUnRTMpN8OclDrbrY=
index 5dc13592ff25f65903864735ec3351a9ccc911c2..637e5dee0cced3e439768337efddae8d7992052d 100644 (file)
@@ -76,6 +76,13 @@ func TestOptWarn() TestOpt {
        }
 }
 
+// TestOptOsFs will enable the real file system in integration tests.
+func TestOptOsFs() TestOpt {
+       return func(c *IntegrationTestConfig) {
+               c.NeedsOsFS = true
+       }
+}
+
 // TestOptWithNFDOnDarwin will normalize the Unicode filenames to NFD on Darwin.
 func TestOptWithNFDOnDarwin() TestOpt {
        return func(c *IntegrationTestConfig) {
index b4232762154c14b90bacbee8163dfcd7722eb48d..762828b70a597debe5e7bd46e5625305fa4c6774 100644 (file)
@@ -74,8 +74,10 @@ func New(fs *filesystems.SourceFilesystem, rs *resources.Spec) (*Client, error)
                        case godartsass.LogEventTypeDebug:
                                // Log as Info for now, we may adjust this if it gets too chatty.
                                infol.Log(logg.String(message))
+                       case godartsass.LogEventTypeDeprecated:
+                               warnl.Logf("DEPRECATED [%s]: %s", event.DeprecationType, message)
                        default:
-                               // The rest are either deprecations or @warn statements.
+                               // The rest are @warn statements.
                                warnl.Log(logg.String(message))
                        }
                },
@@ -151,6 +153,11 @@ type Options struct {
        //     @use "hugo:vars";
        //     $color: vars.$color;
        Vars map[string]any
+
+       // Deprecations IDs in this slice will be silenced.
+       // The IDs can be found in the Dart Sass log output, e.g. "import" in
+       //    WARN  Dart Sass: DEPRECATED [import].
+       SilenceDeprecations []string
 }
 
 func decodeOptions(m map[string]any) (opts Options, err error) {
index 2aac2c5fb54e082440686400c48bd4e60191d9bb..5d1b89eaf08df6549681865fb87d274d84f75b03 100644 (file)
@@ -605,3 +605,38 @@ module hugo-github-issue-12849
 
        b.AssertFileContent("public/index.html", ".foo{color:red}.bar{color:green}")
 }
+
+func TestIgnoreDeprecationWarnings(t *testing.T) {
+       t.Parallel()
+       if !dartsass.Supports() {
+               t.Skip()
+       }
+
+       files := `
+-- hugo.toml --
+disableKinds = ['page','section','rss','sitemap','taxonomy','term']
+-- assets/scss/main.scss --
+@import "moo";
+-- node_modules/foo/_moo.scss --
+$moolor: #fff;
+
+moo {
+  color: $moolor;
+}
+-- config.toml --
+-- layouts/index.html --
+{{ $cssOpts := (dict "includePaths" (slice "node_modules/foo") "transpiler" "dartsass" ) }}
+{{ $r := resources.Get "scss/main.scss" |  toCSS $cssOpts  | minify  }}
+T1: {{ $r.Content }}
+       `
+
+       b := hugolib.Test(t, files, hugolib.TestOptOsFs(), hugolib.TestOptWarn())
+       b.AssertLogContains("Dart Sass: DEPRECATED [import]")
+       b.AssertFileContent("public/index.html", `moo{color:#fff}`)
+
+       files = strings.ReplaceAll(files, `"transpiler" "dartsass"`, `"transpiler" "dartsass" "silenceDeprecations" (slice "import")`)
+
+       b = hugolib.Test(t, files, hugolib.TestOptOsFs(), hugolib.TestOptWarn())
+       b.AssertLogContains("! Dart Sass: DEPRECATED [import]")
+       b.AssertFileContent("public/index.html", `moo{color:#fff}`)
+}
index e23ef0986b0b02e190eda81702cd77cf385d269c..c5f97abff3ed4064de1590f5a3d00cc5ad2c8ceb 100644 (file)
@@ -89,6 +89,7 @@ func (t *transform) Transform(ctx *resources.ResourceTransformationCtx) error {
                OutputStyle:             godartsass.ParseOutputStyle(opts.OutputStyle),
                EnableSourceMap:         opts.EnableSourceMap,
                SourceMapIncludeSources: opts.SourceMapIncludeSources,
+               SilenceDeprecations:     opts.SilenceDeprecations,
        }
 
        // Append any workDir relative include paths