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:
authorAndreas Richter <richtera@users.noreply.github.com>2021-01-18 12:38:09 +0300
committerGitHub <noreply@github.com>2021-01-18 12:38:09 +0300
commit2c8b5d9165011c4b24b494e661ae60dfc7bb7d1b (patch)
tree1fccfe098c0ad5a85a030ba918914ea4191c658c /resources/resource_transformers/js/build.go
parent0004a733c85cee991a8a170e93cd69c326cc8f2f (diff)
pipes: Add external source map support to js.Build and Babel
Fixes #8132
Diffstat (limited to 'resources/resource_transformers/js/build.go')
-rw-r--r--resources/resource_transformers/js/build.go30
1 files changed, 29 insertions, 1 deletions
diff --git a/resources/resource_transformers/js/build.go b/resources/resource_transformers/js/build.go
index 5ff21cf02..0d70bdc33 100644
--- a/resources/resource_transformers/js/build.go
+++ b/resources/resource_transformers/js/build.go
@@ -18,6 +18,8 @@ import (
"fmt"
"io/ioutil"
"os"
+ "path"
+ "regexp"
"strings"
"github.com/spf13/afero"
@@ -92,6 +94,14 @@ func (t *buildTransformation) Transform(ctx *resources.ResourceTransformationCtx
return err
}
+ if buildOptions.Sourcemap == api.SourceMapExternal && buildOptions.Outdir == "" {
+ buildOptions.Outdir, err = ioutil.TempDir(os.TempDir(), "compileOutput")
+ if err != nil {
+ return err
+ }
+ defer os.Remove(buildOptions.Outdir)
+ }
+
result := api.Build(buildOptions)
if len(result.Errors) > 0 {
@@ -145,7 +155,25 @@ func (t *buildTransformation) Transform(ctx *resources.ResourceTransformationCtx
return errors[0]
}
- ctx.To.Write(result.OutputFiles[0].Contents)
+ if buildOptions.Sourcemap == api.SourceMapExternal {
+ content := string(result.OutputFiles[1].Contents)
+ symPath := path.Base(ctx.OutPath) + ".map"
+ re := regexp.MustCompile(`//# sourceMappingURL=.*\n?`)
+ content = re.ReplaceAllString(content, "//# sourceMappingURL="+symPath+"\n")
+
+ if err = ctx.PublishSourceMap(string(result.OutputFiles[0].Contents)); err != nil {
+ return err
+ }
+ _, err := ctx.To.Write([]byte(content))
+ if err != nil {
+ return err
+ }
+ } else {
+ _, err := ctx.To.Write(result.OutputFiles[0].Contents)
+ if err != nil {
+ return err
+ }
+ }
return nil
}