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-07-17 19:36:09 +0300
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2020-07-17 20:09:09 +0300
commit35011bcb26b6fcfcbd77dc05aa8246ca45b2c2ba (patch)
tree80bb9eb048a88ab125a083d0bb25a37ef370a069 /resources
parent084624baaceb436ef376c635253b1394d4c4f4d7 (diff)
Add .Defines to js.Build options
This is needed to import `react` as a library, e.g.: ``` {{ $jsx := resources.Get "index.jsx" }} {{ $options := dict "defines" (dict "process.env.NODE_ENV" "\"development\"") }} {{ $js := $jsx | js.Build $options }} ``` Fixes #7489
Diffstat (limited to 'resources')
-rw-r--r--resources/resource_transformers/js/build.go14
-rw-r--r--resources/resource_transformers/js/build_test.go3
2 files changed, 15 insertions, 2 deletions
diff --git a/resources/resource_transformers/js/build.go b/resources/resource_transformers/js/build.go
index c48778692..df8cdde1d 100644
--- a/resources/resource_transformers/js/build.go
+++ b/resources/resource_transformers/js/build.go
@@ -19,6 +19,8 @@ import (
"path"
"strings"
+ "github.com/spf13/cast"
+
"github.com/gohugoio/hugo/helpers"
"github.com/gohugoio/hugo/hugolib/filesystems"
"github.com/gohugoio/hugo/media"
@@ -50,6 +52,9 @@ type Options struct {
// External dependencies, e.g. "react".
Externals []string `hash:"set"`
+ // User defined symbols.
+ Defines map[string]interface{}
+
// What to use instead of React.createElement.
JSXFactory string
@@ -66,10 +71,11 @@ type internalOptions struct {
Externals []string `hash:"set"`
+ Defines map[string]string
+
// These are currently not exposed in the public Options struct,
// but added here to make the options hash as stable as possible for
// whenever we do.
- Defines map[string]string
TSConfig string
}
@@ -78,6 +84,7 @@ func DecodeOptions(m map[string]interface{}) (opts Options, err error) {
return
}
err = mapstructure.WeakDecode(m, &opts)
+ err = mapstructure.WeakDecode(m, &opts)
if opts.TargetPath != "" {
opts.TargetPath = helpers.ToSlashTrimLeading(opts.TargetPath)
@@ -210,11 +217,16 @@ func toInternalOptions(opts Options) internalOptions {
if target == "" {
target = defaultTarget
}
+ var defines map[string]string
+ if opts.Defines != nil {
+ defines = cast.ToStringMapString(opts.Defines)
+ }
return internalOptions{
TargetPath: opts.TargetPath,
Minify: opts.Minify,
Target: target,
Externals: opts.Externals,
+ Defines: defines,
JSXFactory: opts.JSXFactory,
JSXFragment: opts.JSXFragment,
}
diff --git a/resources/resource_transformers/js/build_test.go b/resources/resource_transformers/js/build_test.go
index 3f2a1e104..b28f66a43 100644
--- a/resources/resource_transformers/js/build_test.go
+++ b/resources/resource_transformers/js/build_test.go
@@ -42,6 +42,7 @@ func TestToInternalOptions(t *testing.T) {
JSXFactory: "v3",
JSXFragment: "v4",
Externals: []string{"react"},
+ Defines: map[string]interface{}{"process.env.NODE_ENV": "production"},
Minify: true,
}
@@ -52,7 +53,7 @@ func TestToInternalOptions(t *testing.T) {
JSXFactory: "v3",
JSXFragment: "v4",
Externals: []string{"react"},
- Defines: nil,
+ Defines: map[string]string{"process.env.NODE_ENV": "production"},
TSConfig: "",
})