]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
js/esbuild: Add platform option
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 12 Dec 2024 21:09:59 +0000 (22:09 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 12 Dec 2024 21:53:15 +0000 (22:53 +0100)
Closes #13136

internal/js/esbuild/options.go
internal/js/esbuild/options_test.go

index 16fc0d4bb762fd15c5362c60e8d651c46cec73da..21509bc15033dfc9ef5581d8e43c23eae623fa71 100644 (file)
@@ -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,
 
index ca19717f7720379bdcaf70f64fc6d261f46a8cb9..7312eea2770d8fb1556f3d159b21b25a4c9ca698 100644 (file)
@@ -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,
        })
 }