A common pattern for Tailwind 3 is to mount that file to get it on the server watch list.
A common pattern is also to add hugo_stats.json to .gitignore.
This has meant that the first time you start the server (no hugo_stats.json), it just doesn't work as expected.
Fixes #11264
FilenamePackageHugoJSON = "package.hugo.json"
// The NPM package file.
FilenamePackageJSON = "package.json"
+
+ FilenameHugoStatsJSON = "hugo_stats.json"
)
var (
"time"
"github.com/bep/logg"
+ "github.com/gohugoio/hugo/hugofs/files"
"github.com/gohugoio/hugo/langs"
"github.com/gohugoio/hugo/publisher"
"github.com/gohugoio/hugo/tpl"
HTMLElements: *htmlElements,
}
- const hugoStatsName = "hugo_stats.json"
-
js, err := json.MarshalIndent(stats, "", " ")
if err != nil {
return err
}
- filename := filepath.Join(h.Configs.LoadingInfo.BaseConfig.WorkingDir, hugoStatsName)
+ filename := filepath.Join(h.Configs.LoadingInfo.BaseConfig.WorkingDir, files.FilenameHugoStatsJSON)
if existingContent, err := afero.ReadFile(hugofs.Os, filename); err == nil {
// Check if the content has changed.
// Verify that Source exists
_, err := c.fs.Stat(sourceDir)
if err != nil {
- continue
+ if strings.HasSuffix(sourceDir, files.FilenameHugoStatsJSON) {
+ // A common pattern for Tailwind 3 is to mount that file to get it on the server watch list.
+
+ // A common pattern is also to add hugo_stats.json to .gitignore.
+
+ // Create an empty file.
+ f, err := c.fs.Create(sourceDir)
+ if err != nil {
+ return nil, fmt.Errorf("%s: %q", errMsg, err)
+ }
+ f.Close()
+ } else {
+ continue
+ }
+
}
// Verify that target points to one of the predefined component dirs
--- /dev/null
+hugo server &
+
+waitServer
+stopServer
+! stderr .
+
+exists hugo_stats.json
+
+-- hugo.toml --
+title = "Hugo Server Test"
+baseURL = "https://example.org/"
+disableKinds = ["taxonomy", "term", "sitemap"]
+[module]
+[[module.mounts]]
+source = "hugo_stats.json"
+target = "assets/watching/hugo_stats.json"
+-- layouts/index.html --
+<body>Home</body>