]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
minifiers: Keep x-bind and blank namespace in SVG minification
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 25 Mar 2026 18:17:11 +0000 (19:17 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 26 Mar 2026 09:49:53 +0000 (10:49 +0100)
Update tdewolff/minify to v2.24.11 and add "" and "x-bind" to KeepNamespaces
to prevent Alpine.js directives from being stripped in SVGs.

This is a new option in tdewolff/minify v2.24.11, and it is needed to prevent breakage of Alpine.js, and possilby others, directives in SVGs.

Fixes #14669

go.mod
go.sum
minifiers/config.go
minifiers/minifiers_test.go

diff --git a/go.mod b/go.mod
index 75815e41c1461cea0748618be2ffaeac6319a94b..964636826f35bfd94d0b47c9cebe703d389758a8 100644 (file)
--- a/go.mod
+++ b/go.mod
@@ -66,8 +66,8 @@ require (
        github.com/spf13/cobra v1.10.2
        github.com/spf13/fsync v0.10.1
        github.com/spf13/pflag v1.0.10
-       github.com/tdewolff/minify/v2 v2.24.10
-       github.com/tdewolff/parse/v2 v2.8.10
+       github.com/tdewolff/minify/v2 v2.24.11
+       github.com/tdewolff/parse/v2 v2.8.11
        github.com/tetratelabs/wazero v1.11.0
        github.com/yuin/goldmark v1.7.17
        github.com/yuin/goldmark-emoji v1.0.6
diff --git a/go.sum b/go.sum
index 901b4338bb175c4a5f5390cb74355ee6fa579297..76e575f607feebdf22df6b95822b17b1068d9833 100644 (file)
--- a/go.sum
+++ b/go.sum
@@ -495,8 +495,12 @@ github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu
 github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 github.com/tdewolff/minify/v2 v2.24.10 h1:SjOOY2Y3Uv34WY4wtyUzJA2T1Xd1v1zQVSZvPP0A/h4=
 github.com/tdewolff/minify/v2 v2.24.10/go.mod h1:fXkGpJ4gel+z1nmeIjVtKmxGZ4ZXd7g1gA3dfTz5/j8=
+github.com/tdewolff/minify/v2 v2.24.11 h1:JlANsiWaRBXedoYtsiZgY3YFkdr42oF32vp2SLgQKi4=
+github.com/tdewolff/minify/v2 v2.24.11/go.mod h1:exq1pjdrh9uAICdfVKQwqz6MsJmWmQahZuTC6pTO6ro=
 github.com/tdewolff/parse/v2 v2.8.10 h1:5a8o388UmuiU3zlOBJ56PN0rxVi67LRNED/zzuHAfC0=
 github.com/tdewolff/parse/v2 v2.8.10/go.mod h1:Hwlni2tiVNKyzR1o6nUs4FOF07URA+JLBLd6dlIXYqo=
+github.com/tdewolff/parse/v2 v2.8.11 h1:SGyjEy3xEqd+W9WVzTlTQ5GkP/en4a1AZNZVJ1cvgm0=
+github.com/tdewolff/parse/v2 v2.8.11/go.mod h1:Hwlni2tiVNKyzR1o6nUs4FOF07URA+JLBLd6dlIXYqo=
 github.com/tdewolff/test v1.0.11 h1:FdLbwQVHxqG16SlkGveC0JVyrJN62COWTRyUFzfbtBE=
 github.com/tdewolff/test v1.0.11/go.mod h1:XPuWBzvdUzhCuxWO1ojpXsyzsA5bFoS3tO/Q3kFuTG8=
 github.com/tetratelabs/wazero v1.11.0 h1:+gKemEuKCTevU4d7ZTzlsvgd1uaToIDtlQlmNbwqYhA=
index 35d40ac249e9095529b9208be8a780ad2d1d2cc9..aab19b6af23ca2066b8925c408c697ca43a4e63a 100644 (file)
@@ -46,8 +46,9 @@ var defaultTdewolffConfig = TdewolffConfig{
        },
        JSON: json.Minifier{},
        SVG: svg.Minifier{
-               KeepComments: false,
-               Precision:    0, // 0 means no trimming
+               KeepComments:   false,
+               Precision:      0, // 0 means no trimming
+               KeepNamespaces: []string{"", "x-bind"},
        },
        XML: xml.Minifier{
                KeepWhitespace: false,
index f36ae98a1ccfc69ebf1f3f2cb3fa708365b44063..691ecbe971053ce62d29d569a92801318909912f 100644 (file)
@@ -158,6 +158,9 @@ func TestBugs(t *testing.T) {
                {media.Builtin.HTMLType, "<i class='fas fa-tags fa-fw'></i> Tags", `<i class='fas fa-tags fa-fw'></i> Tags`},
                // Issue #13082
                {media.Builtin.HTMLType, "<gcse:searchresults-only></gcse:searchresults-only>", `<gcse:searchresults-only></gcse:searchresults-only>`},
+               // Issue #14669.
+               {media.Builtin.SVGType, `<use x-bind:href="myicon">`, `<use x-bind:href="myicon">`},
+               {media.Builtin.SVGType, `<use :href="myicon">`, `<use :href="myicon">`},
        } {
                var b bytes.Buffer