From 504c78da4b5020e1fd13a1195ad38a9e85f8289a Mon Sep 17 00:00:00 2001 From: Shohei Ueda <30958501+peaceiris@users.noreply.github.com> Date: Sun, 9 May 2021 07:20:28 +0900 Subject: [PATCH] modules/npm: Change SetEscapeHTML to false Closes #8512 --- hugolib/hugo_modules_test.go | 173 +++++++++++++++++++-------------- modules/npm/package_builder.go | 11 ++- 2 files changed, 106 insertions(+), 78 deletions(-) diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go index fbb232325..5ebf8bd0b 100644 --- a/hugolib/hugo_modules_test.go +++ b/hugolib/hugo_modules_test.go @@ -135,7 +135,11 @@ JS imported in module: | b.WithSourceFile("package.json", `{ "name": "mypack", "version": "1.2.3", - "scripts": {}, + "scripts": { + "client": "wait-on http://localhost:1313 && open http://localhost:1313", + "start": "run-p client server", + "test": "echo 'hoge' > hoge" + }, "dependencies": { "nonon": "error" } @@ -144,7 +148,11 @@ JS imported in module: | b.WithSourceFile("package.hugo.json", `{ "name": "mypack", "version": "1.2.3", - "scripts": {}, + "scripts": { + "client": "wait-on http://localhost:1313 && open http://localhost:1313", + "start": "run-p client server", + "test": "echo 'hoge' > hoge" + }, "dependencies": { "foo": "1.2.3" }, @@ -160,34 +168,39 @@ JS imported in module: | b.AssertFileContentFn("package.json", func(s string) bool { return s == `{ - "comments": { + "comments": { + "dependencies": { + "foo": "project", + "react-dom": "github.com/gohugoio/hugoTestModule2" + }, + "devDependencies": { + "@babel/cli": "github.com/gohugoio/hugoTestModule2", + "@babel/core": "github.com/gohugoio/hugoTestModule2", + "@babel/preset-env": "github.com/gohugoio/hugoTestModule2", + "postcss-cli": "project", + "tailwindcss": "project" + } + }, "dependencies": { - "foo": "project", - "react-dom": "github.com/gohugoio/hugoTestModule2" + "foo": "1.2.3", + "react-dom": "^16.13.1" }, "devDependencies": { - "@babel/cli": "github.com/gohugoio/hugoTestModule2", - "@babel/core": "github.com/gohugoio/hugoTestModule2", - "@babel/preset-env": "github.com/gohugoio/hugoTestModule2", - "postcss-cli": "project", - "tailwindcss": "project" - } - }, - "dependencies": { - "foo": "1.2.3", - "react-dom": "^16.13.1" - }, - "devDependencies": { - "@babel/cli": "7.8.4", - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.5", - "postcss-cli": "7.8.0", - "tailwindcss": "1.8.0" - }, - "name": "mypack", - "scripts": {}, - "version": "1.2.3" -}` + "@babel/cli": "7.8.4", + "@babel/core": "7.9.0", + "@babel/preset-env": "7.9.5", + "postcss-cli": "7.8.0", + "tailwindcss": "1.8.0" + }, + "name": "mypack", + "scripts": { + "client": "wait-on http://localhost:1313 && open http://localhost:1313", + "start": "run-p client server", + "test": "echo 'hoge' > hoge" + }, + "version": "1.2.3" +} +` }) }) @@ -198,7 +211,11 @@ JS imported in module: | const origPackageJSON = `{ "name": "mypack", "version": "1.2.3", - "scripts": {}, + "scripts": { + "client": "wait-on http://localhost:1313 && open http://localhost:1313", + "start": "run-p client server", + "test": "echo 'hoge' > hoge" + }, "dependencies": { "moo": "1.2.3" } @@ -211,34 +228,39 @@ JS imported in module: | b.AssertFileContentFn("package.json", func(s string) bool { return s == `{ - "comments": { + "comments": { + "dependencies": { + "moo": "project", + "react-dom": "github.com/gohugoio/hugoTestModule2" + }, + "devDependencies": { + "@babel/cli": "github.com/gohugoio/hugoTestModule2", + "@babel/core": "github.com/gohugoio/hugoTestModule2", + "@babel/preset-env": "github.com/gohugoio/hugoTestModule2", + "postcss-cli": "github.com/gohugoio/hugoTestModule2", + "tailwindcss": "github.com/gohugoio/hugoTestModule2" + } + }, "dependencies": { - "moo": "project", - "react-dom": "github.com/gohugoio/hugoTestModule2" + "moo": "1.2.3", + "react-dom": "^16.13.1" }, "devDependencies": { - "@babel/cli": "github.com/gohugoio/hugoTestModule2", - "@babel/core": "github.com/gohugoio/hugoTestModule2", - "@babel/preset-env": "github.com/gohugoio/hugoTestModule2", - "postcss-cli": "github.com/gohugoio/hugoTestModule2", - "tailwindcss": "github.com/gohugoio/hugoTestModule2" - } - }, - "dependencies": { - "moo": "1.2.3", - "react-dom": "^16.13.1" - }, - "devDependencies": { - "@babel/cli": "7.8.4", - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.5", - "postcss-cli": "7.1.0", - "tailwindcss": "1.2.0" - }, - "name": "mypack", - "scripts": {}, - "version": "1.2.3" -}` + "@babel/cli": "7.8.4", + "@babel/core": "7.9.0", + "@babel/preset-env": "7.9.5", + "postcss-cli": "7.1.0", + "tailwindcss": "1.2.0" + }, + "name": "mypack", + "scripts": { + "client": "wait-on http://localhost:1313 && open http://localhost:1313", + "start": "run-p client server", + "test": "echo 'hoge' > hoge" + }, + "version": "1.2.3" +} +` }) // https://github.com/gohugoio/hugo/issues/7690 @@ -254,31 +276,32 @@ JS imported in module: | b.AssertFileContentFn("package.json", func(s string) bool { return s == `{ - "comments": { + "comments": { + "dependencies": { + "react-dom": "github.com/gohugoio/hugoTestModule2" + }, + "devDependencies": { + "@babel/cli": "github.com/gohugoio/hugoTestModule2", + "@babel/core": "github.com/gohugoio/hugoTestModule2", + "@babel/preset-env": "github.com/gohugoio/hugoTestModule2", + "postcss-cli": "github.com/gohugoio/hugoTestModule2", + "tailwindcss": "github.com/gohugoio/hugoTestModule2" + } + }, "dependencies": { - "react-dom": "github.com/gohugoio/hugoTestModule2" + "react-dom": "^16.13.1" }, "devDependencies": { - "@babel/cli": "github.com/gohugoio/hugoTestModule2", - "@babel/core": "github.com/gohugoio/hugoTestModule2", - "@babel/preset-env": "github.com/gohugoio/hugoTestModule2", - "postcss-cli": "github.com/gohugoio/hugoTestModule2", - "tailwindcss": "github.com/gohugoio/hugoTestModule2" - } - }, - "dependencies": { - "react-dom": "^16.13.1" - }, - "devDependencies": { - "@babel/cli": "7.8.4", - "@babel/core": "7.9.0", - "@babel/preset-env": "7.9.5", - "postcss-cli": "7.1.0", - "tailwindcss": "1.2.0" - }, - "name": "myhugosite", - "version": "0.1.0" -}` + "@babel/cli": "7.8.4", + "@babel/core": "7.9.0", + "@babel/preset-env": "7.9.5", + "postcss-cli": "7.1.0", + "tailwindcss": "1.2.0" + }, + "name": "myhugosite", + "version": "0.1.0" +} +` }) }) } diff --git a/modules/npm/package_builder.go b/modules/npm/package_builder.go index f407a92bd..fe5d19832 100644 --- a/modules/npm/package_builder.go +++ b/modules/npm/package_builder.go @@ -14,9 +14,11 @@ package npm import ( + "bytes" "encoding/json" "fmt" "io" + "strings" "github.com/gohugoio/hugo/common/hugio" @@ -129,12 +131,15 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error { b.originalPackageJSON["comments"] = commentsm // Write it out to the project package.json - packageJSONData, err := json.MarshalIndent(b.originalPackageJSON, "", " ") - if err != nil { + packageJSONData := new(bytes.Buffer) + encoder := json.NewEncoder(packageJSONData) + encoder.SetEscapeHTML(false) + encoder.SetIndent("", strings.Repeat(" ", 2)) + if err := encoder.Encode(b.originalPackageJSON); err != nil { return errors.Wrap(err, "npm pack: failed to marshal JSON") } - if err := afero.WriteFile(fs, packageJSONName, packageJSONData, 0666); err != nil { + if err := afero.WriteFile(fs, packageJSONName, packageJSONData.Bytes(), 0666); err != nil { return errors.Wrap(err, "npm pack: failed to write package.json") }