diff options
author | Andreas Richter <richtera@users.noreply.github.com> | 2021-01-18 12:38:09 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-18 12:38:09 +0300 |
commit | 2c8b5d9165011c4b24b494e661ae60dfc7bb7d1b (patch) | |
tree | 1fccfe098c0ad5a85a030ba918914ea4191c658c /resources/resource_transformers/js/build.go | |
parent | 0004a733c85cee991a8a170e93cd69c326cc8f2f (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.go | 30 |
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 } |