Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/hugo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-10-05 14:34:14 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-11-03 15:04:37 +0300
commit85e4dd7370eae97ae367e596aa6a10ba42fd4b7c (patch)
tree23e739edbed24a62f842c1a3ebc1d9cb706ea8b7 /hugolib/hugo_sites_build.go
parent3089fc0ba171be14670b19439bc2eab6b077b6c3 (diff)
Make js.Build fully support modules
Fixes #7816 Fixes #7777 Fixes #7916
Diffstat (limited to 'hugolib/hugo_sites_build.go')
-rw-r--r--hugolib/hugo_sites_build.go41
1 files changed, 35 insertions, 6 deletions
diff --git a/hugolib/hugo_sites_build.go b/hugolib/hugo_sites_build.go
index 3c0440a97..603772afd 100644
--- a/hugolib/hugo_sites_build.go
+++ b/hugolib/hugo_sites_build.go
@@ -33,8 +33,6 @@ import (
"github.com/spf13/afero"
- "github.com/gohugoio/hugo/resources/resource"
-
"github.com/gohugoio/hugo/output"
"github.com/pkg/errors"
@@ -351,14 +349,45 @@ func (h *HugoSites) postProcess() error {
return err
}
- var toPostProcess []resource.OriginProvider
- for _, s := range h.Sites {
- for _, v := range s.ResourceSpec.PostProcessResources {
- toPostProcess = append(toPostProcess, v)
+ // This will only be set when js.Build have been triggered with
+ // imports that resolves to the project or a module.
+ // Write a jsconfig.json file to the project's /asset directory
+ // to help JS intellisense in VS Code etc.
+ if !h.ResourceSpec.BuildConfig.NoJSConfigInAssets && h.BaseFs.Assets.Dirs != nil {
+ m := h.BaseFs.Assets.Dirs[0].Meta()
+ assetsDir := m.Filename()
+ if strings.HasPrefix(assetsDir, h.ResourceSpec.WorkingDir) {
+ if jsConfig := h.ResourceSpec.JSConfigBuilder.Build(assetsDir); jsConfig != nil {
+
+ b, err := json.MarshalIndent(jsConfig, "", " ")
+ if err != nil {
+ h.Log.Warnf("Failed to create jsconfig.json: %s", err)
+
+ } else {
+ filename := filepath.Join(assetsDir, "jsconfig.json")
+ if h.running {
+ h.skipRebuildForFilenamesMu.Lock()
+ h.skipRebuildForFilenames[filename] = true
+ h.skipRebuildForFilenamesMu.Unlock()
+ }
+ // Make sure it's written to the OS fs as this is used by
+ // editors.
+ if err := afero.WriteFile(hugofs.Os, filename, b, 0666); err != nil {
+ h.Log.Warnf("Failed to write jsconfig.json: %s", err)
+ }
+ }
+ }
+
}
}
+ var toPostProcess []postpub.PostPublishedResource
+ for _, r := range h.ResourceSpec.PostProcessResources {
+ toPostProcess = append(toPostProcess, r)
+ }
+
if len(toPostProcess) == 0 {
+ // Nothing more to do.
return nil
}