mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
Fix cache busting setup
By correctly capturing the target variable when compiling the cache buster. Fixes #11268
This commit is contained in:
parent
5bd22ba85f
commit
6bbec90014
2 changed files with 41 additions and 8 deletions
|
@ -333,11 +333,11 @@ func (c *CacheBuster) CompileConfig(logger loggers.Logger) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
source := c.Source
|
source := c.Source
|
||||||
target := c.Target
|
|
||||||
sourceRe, err := regexp.Compile(source)
|
sourceRe, err := regexp.Compile(source)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to compile cache buster source %q: %w", c.Source, err)
|
return fmt.Errorf("failed to compile cache buster source %q: %w", c.Source, err)
|
||||||
}
|
}
|
||||||
|
target := c.Target
|
||||||
var compileErr error
|
var compileErr error
|
||||||
debugl := logger.Logger().WithLevel(logg.LevelDebug).WithField(loggers.FieldNameCmd, "cachebuster")
|
debugl := logger.Logger().WithLevel(logg.LevelDebug).WithField(loggers.FieldNameCmd, "cachebuster")
|
||||||
|
|
||||||
|
@ -353,23 +353,23 @@ func (c *CacheBuster) CompileConfig(logger loggers.Logger) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
groups := m[1:]
|
groups := m[1:]
|
||||||
|
currentTarget := target
|
||||||
// Replace $1, $2 etc. in target.
|
// Replace $1, $2 etc. in target.
|
||||||
|
|
||||||
for i, g := range groups {
|
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 {
|
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 nil
|
||||||
}
|
}
|
||||||
return func(s string) bool {
|
return func(ss string) bool {
|
||||||
match = targetRe.MatchString(s)
|
match = targetRe.MatchString(ss)
|
||||||
matchString := "no match"
|
matchString := "no match"
|
||||||
if match {
|
if match {
|
||||||
matchString = "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
|
return match
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,3 +164,36 @@ func TestBuildConfigCacheBusters(t *testing.T) {
|
||||||
c.Assert(m("json"), qt.IsTrue)
|
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)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue