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) +}