noProxy = "none"
private = "*.*"
replacements = ""
-workspace = ""
+workspace = "off"
{{< /code-toggle >}}
noVendor
: Comma separated glob list matching paths that should be treated as private.
workspace
-: The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+.
+: The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. In Hugo `v0.109.0` we changed the default to `off` and we now resolve any relative work filenames relative to the working directory.
replacements
: A comma separated (or a slice) list of module path to directory replacement mapping, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary locally development of a module, and then it makes sense to set it as an OS environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Any relative path is relate to [themesDir](https://gohugo.io/getting-started/configuration/#all-configuration-settings), and absolute paths are allowed.
package modules
import (
+ "fmt"
+ "os"
+ "path/filepath"
"testing"
"github.com/gohugoio/hugo/common/hugo"
c := qt.New(t)
c.Run("Basic", func(c *qt.C) {
+ tempDir := c.TempDir()
tomlConfig := `
-workingDir = "/src/project"
+workingDir = %q
[module]
workspace = "hugo.work"
[module.hugoVersion]
target="content/blog"
lang="en"
`
- cfg, err := config.FromConfigString(tomlConfig, "toml")
+
+ hugoWorkFilename := filepath.Join(tempDir, "hugo.work")
+ f, _ := os.Create(hugoWorkFilename)
+ f.Close()
+ cfg, err := config.FromConfigString(fmt.Sprintf(tomlConfig, tempDir), "toml")
c.Assert(err, qt.IsNil)
mcfg, err := DecodeConfig(cfg)
c.Assert(hv.IsValid(), qt.Equals, true)
}
- c.Assert(mcfg.Workspace, qt.Equals, "/src/project/hugo.work")
+ c.Assert(mcfg.Workspace, qt.Equals, hugoWorkFilename)
c.Assert(len(mcfg.Mounts), qt.Equals, 1)
c.Assert(len(mcfg.Imports), qt.Equals, 1)
return m.Replace().Version() == ""
}
- return false
+ // Any module set up in a workspace file will have Indirect set to false.
+ // That leaves modules inside the read-only module cache.
+ return !m.gomod.Indirect
}