aboutsummaryrefslogtreecommitdiffhomepage
path: root/config
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2023-07-19 15:37:17 +0200
committerBjørn Erik Pedersen <[email protected]>2023-07-19 19:50:37 +0200
commit6bbec9001445f623cead19de6811ee960cc53a10 (patch)
tree594d022a3adebf0bcc9ca5c2a64b1697c3a0f230 /config
parent5bd22ba85f614e0d5cc11f5eecfa4b8227d6b524 (diff)
downloadhugo-6bbec9001445f623cead19de6811ee960cc53a10.tar.gz
hugo-6bbec9001445f623cead19de6811ee960cc53a10.zip
Fix cache busting setup
By correctly capturing the target variable when compiling the cache buster. Fixes #11268
Diffstat (limited to 'config')
-rw-r--r--config/commonConfig.go16
-rw-r--r--config/commonConfig_test.go33
2 files changed, 41 insertions, 8 deletions
diff --git a/config/commonConfig.go b/config/commonConfig.go
index 5cf526708..ef9d47553 100644
--- a/config/commonConfig.go
+++ b/config/commonConfig.go
@@ -333,11 +333,11 @@ func (c *CacheBuster) CompileConfig(logger loggers.Logger) error {
}
source := c.Source
- target := c.Target
sourceRe, err := regexp.Compile(source)
if err != nil {
return fmt.Errorf("failed to compile cache buster source %q: %w", c.Source, err)
}
+ target := c.Target
var compileErr error
debugl := logger.Logger().WithLevel(logg.LevelDebug).WithField(loggers.FieldNameCmd, "cachebuster")
@@ -353,23 +353,23 @@ func (c *CacheBuster) CompileConfig(logger loggers.Logger) error {
return nil
}
groups := m[1:]
+ currentTarget := target
// Replace $1, $2 etc. in target.
-
for i, g := range groups {
- target = strings.ReplaceAll(target, fmt.Sprintf("$%d", i+1), g)
+ currentTarget = strings.ReplaceAll(target, fmt.Sprintf("$%d", i+1), g)
}
- targetRe, err := regexp.Compile(target)
+ targetRe, err := regexp.Compile(currentTarget)
if err != nil {
- compileErr = fmt.Errorf("failed to compile cache buster target %q: %w", target, err)
+ compileErr = fmt.Errorf("failed to compile cache buster target %q: %w", currentTarget, err)
return nil
}
- return func(s string) bool {
- match = targetRe.MatchString(s)
+ return func(ss string) bool {
+ match = targetRe.MatchString(ss)
matchString := "no match"
if match {
matchString = "match!"
}
- logger.Debugf("Matching %q with target %q: %s", s, target, matchString)
+ logger.Debugf("Matching %q with target %q: %s", ss, currentTarget, matchString)
return match
}
diff --git a/config/commonConfig_test.go b/config/commonConfig_test.go
index b8130eb0d..8aa1318dd 100644
--- a/config/commonConfig_test.go
+++ b/config/commonConfig_test.go
@@ -164,3 +164,36 @@ func TestBuildConfigCacheBusters(t *testing.T) {
c.Assert(m("json"), qt.IsTrue)
}
+
+func TestBuildConfigCacheBusterstTailwindSetup(t *testing.T) {
+ c := qt.New(t)
+ cfg := New()
+ cfg.Set("build", map[string]interface{}{
+ "cacheBusters": []map[string]string{
+ {
+ "source": "assets/watching/hugo_stats\\.json",
+ "target": "css",
+ },
+ {
+ "source": "(postcss|tailwind)\\.config\\.js",
+ "target": "css",
+ },
+ {
+ "source": "assets/.*\\.(js|ts|jsx|tsx)",
+ "target": "js",
+ },
+ {
+ "source": "assets/.*\\.(.*)$",
+ "target": "$1",
+ },
+ },
+ })
+
+ conf := DecodeBuildConfig(cfg)
+ l := loggers.NewDefault()
+ c.Assert(conf.CompileConfig(l), qt.IsNil)
+
+ m, err := conf.MatchCacheBuster(l, "assets/watching/hugo_stats.json")
+ c.Assert(err, qt.IsNil)
+ c.Assert(m("css"), qt.IsTrue)
+}