diff options
author | Bjørn Erik Pedersen <[email protected]> | 2024-12-12 22:09:59 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2024-12-12 22:53:15 +0100 |
commit | ec1933f79d0da792d5c853cf7bf99fc9f0961162 (patch) | |
tree | d113b1c320ac441d0d4ca5a28d2fb73328dd94b0 | |
parent | 75ad9cdaaba5e2c13582cd95bc77fb1b570e0b75 (diff) | |
download | hugo-ec1933f79d0da792d5c853cf7bf99fc9f0961162.tar.gz hugo-ec1933f79d0da792d5c853cf7bf99fc9f0961162.zip |
js/esbuild: Add platform option
Closes #13136
-rw-r--r-- | internal/js/esbuild/options.go | 19 | ||||
-rw-r--r-- | internal/js/esbuild/options_test.go | 27 |
2 files changed, 43 insertions, 3 deletions
diff --git a/internal/js/esbuild/options.go b/internal/js/esbuild/options.go index 16fc0d4bb..21509bc15 100644 --- a/internal/js/esbuild/options.go +++ b/internal/js/esbuild/options.go @@ -121,6 +121,11 @@ type ExternalOptions struct { // Default is to esm. Format string + // One of browser, node, neutral. + // Default is browser. + // See https://esbuild.github.io/api/#platform + Platform string + // External dependencies, e.g. "react". Externals []string @@ -274,6 +279,19 @@ func (opts *Options) compile() (err error) { return } + var platform api.Platform + switch opts.Platform { + case "", "browser": + platform = api.PlatformBrowser + case "node": + platform = api.PlatformNode + case "neutral": + platform = api.PlatformNeutral + default: + err = fmt.Errorf("unsupported platform type: %q", opts.Platform) + return + } + var defines map[string]string if opts.Defines != nil { defines = maps.ToStringMapString(opts.Defines) @@ -310,6 +328,7 @@ func (opts *Options) compile() (err error) { Target: target, Format: format, + Platform: platform, Sourcemap: sourceMap, SourcesContent: sourcesContent, diff --git a/internal/js/esbuild/options_test.go b/internal/js/esbuild/options_test.go index ca19717f7..7312eea27 100644 --- a/internal/js/esbuild/options_test.go +++ b/internal/js/esbuild/options_test.go @@ -38,6 +38,7 @@ func TestToBuildOptions(t *testing.T) { Bundle: true, Target: api.ESNext, Format: api.FormatIIFE, + Platform: api.PlatformBrowser, SourcesContent: 1, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, @@ -62,6 +63,7 @@ func TestToBuildOptions(t *testing.T) { Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, + Platform: api.PlatformBrowser, SourcesContent: 1, MinifyIdentifiers: true, MinifySyntax: true, @@ -87,6 +89,7 @@ func TestToBuildOptions(t *testing.T) { Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, + Platform: api.PlatformBrowser, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, @@ -113,6 +116,7 @@ func TestToBuildOptions(t *testing.T) { Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, + Platform: api.PlatformBrowser, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, @@ -139,6 +143,7 @@ func TestToBuildOptions(t *testing.T) { Bundle: true, Target: api.ES2018, Format: api.FormatCommonJS, + Platform: api.PlatformBrowser, MinifyIdentifiers: true, MinifySyntax: true, MinifyWhitespace: true, @@ -164,6 +169,7 @@ func TestToBuildOptions(t *testing.T) { Bundle: true, Target: api.ESNext, Format: api.FormatIIFE, + Platform: api.PlatformBrowser, SourcesContent: 1, Stdin: &api.StdinOptions{ Loader: api.LoaderJS, @@ -210,10 +216,25 @@ func TestToBuildOptionsTarget(t *testing.T) { func TestDecodeExternalOptions(t *testing.T) { c := qt.New(t) - m := map[string]any{} - opts, err := DecodeExternalOptions(m) + m := map[string]any{ + "platform": "node", + } + ext, err := DecodeExternalOptions(m) c.Assert(err, qt.IsNil) - c.Assert(opts, qt.DeepEquals, ExternalOptions{ + c.Assert(ext, qt.DeepEquals, ExternalOptions{ SourcesContent: true, + Platform: "node", + }) + + opts := Options{ + ExternalOptions: ext, + } + c.Assert(opts.compile(), qt.IsNil) + c.Assert(opts.compiled, qt.DeepEquals, api.BuildOptions{ + Bundle: true, + Target: api.ESNext, + Format: api.FormatIIFE, + Platform: api.PlatformNode, + SourcesContent: api.SourcesContentInclude, }) } |