diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-09-09 22:31:43 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-09-13 20:55:29 +0200 |
commit | 85ba9bfffba9bfd0b095cb766f72700d4c211e31 (patch) | |
tree | 43b66efaafe4cb804234ca7273873ab949305799 /common | |
parent | 9df60b62f9c4e36a269f0c6e9a69bee9dc691031 (diff) |
Add "hugo mod npm pack"
This commit also introduces a convention where these common JS config files, including `package.hugo.json`, gets mounted into:
```
assets/_jsconfig
´``
These files mapped to their real filename will be added to the environment when running PostCSS, Babel etc., so you can do `process.env.HUGO_FILE_TAILWIND_CONFIG_JS` to resolve the real filename.
But do note that `assets` is a composite/union filesystem, so if your config file is not meant to be overridden, name them something specific.
This commit also adds adds `workDir/node_modules` to `NODE_PATH` and `HUGO_WORKDIR` to the env when running the JS tools above.
Fixes #7644
Fixes #7656
Fixes #7675
Diffstat (limited to 'common')
-rw-r--r-- | common/hugo/hugo.go | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/common/hugo/hugo.go b/common/hugo/hugo.go index 6e07f69c3..ac75e6bca 100644 --- a/common/hugo/hugo.go +++ b/common/hugo/hugo.go @@ -17,8 +17,15 @@ import ( "fmt" "html/template" "os" + "path/filepath" + "strings" + + "github.com/gohugoio/hugo/hugofs/files" + + "github.com/spf13/afero" "github.com/gohugoio/hugo/config" + "github.com/gohugoio/hugo/hugofs" ) const ( @@ -73,8 +80,23 @@ func NewInfo(environment string) Info { } } -func GetExecEnviron(cfg config.Provider) []string { +func GetExecEnviron(workDir string, cfg config.Provider, fs afero.Fs) []string { env := os.Environ() + nodepath := filepath.Join(workDir, "node_modules") + if np := os.Getenv("NODE_PATH"); np != "" { + nodepath = workDir + string(os.PathListSeparator) + np + } + config.SetEnvVars(&env, "NODE_PATH", nodepath) + config.SetEnvVars(&env, "HUGO_WORKDIR", workDir) config.SetEnvVars(&env, "HUGO_ENVIRONMENT", cfg.GetString("environment")) + fis, err := afero.ReadDir(fs, files.FolderJSConfig) + if err == nil { + for _, fi := range fis { + key := fmt.Sprintf("HUGO_FILE_%s", strings.ReplaceAll(strings.ToUpper(fi.Name()), ".", "_")) + value := fi.(hugofs.FileMetaInfo).Meta().Filename() + config.SetEnvVars(&env, key, value) + } + } + return env } |