mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-21 20:46:30 -05:00
modules/npm: Preserve the original package.json if it exists
Fixes #7690
This commit is contained in:
parent
cd830bb027
commit
214afe4c1b
3 changed files with 31 additions and 15 deletions
|
@ -26,28 +26,29 @@ import (
|
|||
|
||||
// CopyFile copies a file.
|
||||
func CopyFile(fs afero.Fs, from, to string) error {
|
||||
sf, err := os.Open(from)
|
||||
sf, err := fs.Open(from)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer sf.Close()
|
||||
df, err := os.Create(to)
|
||||
df, err := fs.Create(to)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer df.Close()
|
||||
_, err = io.Copy(df, sf)
|
||||
if err == nil {
|
||||
si, err := os.Stat(from)
|
||||
if err != nil {
|
||||
err = os.Chmod(to, si.Mode())
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
si, err := fs.Stat(from)
|
||||
if err != nil {
|
||||
err = fs.Chmod(to, si.Mode())
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
@ -201,14 +201,16 @@ JS imported in module: |
|
|||
b, clean := newTestBuilder(t, "")
|
||||
defer clean()
|
||||
|
||||
b.WithSourceFile("package.json", `{
|
||||
const origPackageJSON = `{
|
||||
"name": "mypack",
|
||||
"version": "1.2.3",
|
||||
"scripts": {},
|
||||
"dependencies": {
|
||||
"moo": "1.2.3"
|
||||
}
|
||||
}`)
|
||||
}`
|
||||
|
||||
b.WithSourceFile("package.json", origPackageJSON)
|
||||
|
||||
b.Build(BuildCfg{})
|
||||
b.Assert(npm.Pack(b.H.BaseFs.SourceFs, b.H.BaseFs.Assets.Dirs), qt.IsNil)
|
||||
|
@ -244,6 +246,10 @@ JS imported in module: |
|
|||
"version": "1.2.3"
|
||||
}`
|
||||
})
|
||||
|
||||
// https://github.com/gohugoio/hugo/issues/7690
|
||||
b.AssertFileContent("package.hugo.json", origPackageJSON)
|
||||
|
||||
})
|
||||
|
||||
t.Run("Create package.json, no default, no package.json", func(t *testing.T) {
|
||||
|
@ -281,7 +287,9 @@ JS imported in module: |
|
|||
"name": "myhugosite",
|
||||
"version": "0.1.0"
|
||||
}`
|
||||
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@ import (
|
|||
"fmt"
|
||||
"io"
|
||||
|
||||
"github.com/gohugoio/hugo/common/hugio"
|
||||
|
||||
"github.com/gohugoio/hugo/hugofs/files"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
@ -51,7 +53,12 @@ func Pack(fs afero.Fs, fis []hugofs.FileMetaInfo) error {
|
|||
if err != nil {
|
||||
// Have a package.json?
|
||||
fi, err = fs.Stat(packageJSONName)
|
||||
if err != nil {
|
||||
if err == nil {
|
||||
// Preserve the original in package.hugo.json.
|
||||
if err = hugio.CopyFile(fs, packageJSONName, files.FilenamePackageHugoJSON); err != nil {
|
||||
return errors.Wrap(err, "npm pack: failed to copy package file")
|
||||
}
|
||||
} else {
|
||||
// Create one.
|
||||
name := "project"
|
||||
// Use the Hugo site's folder name as the default name.
|
||||
|
|
Loading…
Reference in a new issue