Files
hugo/testscripts/commands/mod_npm__moduleorder.txt
T
Bjørn Erik Pedersen d88a29e002 npm: Use workspaces to simplify hugo mod npm pack
Rewrite `hugo mod npm pack` to use npm workspaces. Module deps are now
written to packages/hugoautogen/package.json and the root package.json
gets a "workspaces" reference. A hugo_packagemeta.json sidecar stores a
hash of all input package files so regular commands can warn when npm
deps are out of sync.

Other changes:
- Workspace glob patterns (*, **, {a,b}) are resolved via gobwas/glob.
- Workspaces defined in package.hugo.json are supported.
- package.hugo.json is only recognised at module roots, not in workspaces.
- When package.hugo.json exists, package.json is not mounted or vendored.
- packages/hugoautogen is not mounted or vendored from dependencies.
- Add usePackageJSON import option (auto/always/never) to control whether
  a module's npm deps are included. "auto" checks for Hugo config files
  or package.hugo.json.
- The staleness check is skipped when running `hugo mod npm pack` itself.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 16:00:50 +01:00

69 lines
2.0 KiB
Plaintext

# Test mod npm pack with shuffled modules.
dostounix golden1/package.json
dostounix golden1/packages/hugoautogen/package.json
dostounix golden1/packages/hugoautogen/hugo_packagemeta.json
hugo mod npm pack
cmp packages/hugoautogen/package.json golden1/packages/hugoautogen/package.json
cmp package.json golden1/package.json
cmp packages/hugoautogen/hugo_packagemeta.json golden1/packages/hugoautogen/hugo_packagemeta.json
-- hugo.toml --
baseURL = "https://example.org/"
[module]
[[module.imports]]
path="github.com/gohugoio/hugoTestModsNPMNested/d"
[[module.imports]]
path="github.com/gohugoio/hugoTestModsNPMNested/a"
-- go.mod --
module github.com/gohugoio/hugoTestModule
go 1.20
-- golden1/package.json --
{
"workspaces": [
"packages/hugoautogen"
]
}
-- golden1/packages/hugoautogen/package.json --
{
"dependencies": {
"count-days-in-month": "^1.0.0",
"dedupe": "4.0.1",
"fast-cartesian": "9.0.0",
"is-sorted": "1.0.2",
"once": "1.4.0",
"pluralize": "8.0.0",
"to-space-case": "0.1.3"
},
"devDependencies": {
"decamelize": "6.0.0",
"strip-ansi": "7.0.0",
"to-pascal-case": "1.0.0"
},
"name": "script-mod_npm__moduleorder",
"version": "0.1.0"
}
-- golden1/packages/hugoautogen/hugo_packagemeta.json --
{
"sum": "dd3590c300b0bebb",
"dependencySources": {
"dependencies": {
"count-days-in-month": "github.com/gohugoio/hugoTestModsNPMNested/a",
"dedupe": "github.com/gohugoio/hugoTestModsNPMNested/ab",
"fast-cartesian": "github.com/gohugoio/hugoTestModsNPMNested/a",
"is-sorted": "github.com/gohugoio/hugoTestModsNPMNested/d",
"once": "github.com/gohugoio/hugoTestModsNPMNested/d",
"pluralize": "github.com/gohugoio/hugoTestModsNPMNested/ab",
"to-space-case": "github.com/gohugoio/hugoTestModsNPMNested/a"
},
"devDependencies": {
"decamelize": "github.com/gohugoio/hugoTestModsNPMNested/a",
"strip-ansi": "github.com/gohugoio/hugoTestModsNPMNested/ab",
"to-pascal-case": "github.com/gohugoio/hugoTestModsNPMNested/a"
}
}
}