diff --git a/.changeset/hip-jars-boil.md b/.changeset/hip-jars-boil.md new file mode 100644 index 0000000000..5bdbdf7c34 --- /dev/null +++ b/.changeset/hip-jars-boil.md @@ -0,0 +1,6 @@ +--- +"@pnpm/calc-dep-state": major +"pnpm": minor +--- + +**Semi-breaking.** Changed the location of unscoped packages in the virtual global store. They will now be stored under a directory named `@` to maintain a uniform 4-level directory depth. diff --git a/packages/calc-dep-state/src/index.ts b/packages/calc-dep-state/src/index.ts index f2b247a908..ad220305f4 100644 --- a/packages/calc-dep-state/src/index.ts +++ b/packages/calc-dep-state/src/index.ts @@ -107,8 +107,12 @@ export function * iterateHashedGraphNodes ( deps: _calcDepGraphHash(new Set(), depPath), } const hexDigest = hashObjectWithoutSorting(state, { encoding: 'hex' }) + // Use @/ prefix for unscoped packages to maintain uniform 4-level directory depth + // Scoped: @scope/pkg/version/hash + // Unscoped: @/pkg/version/hash + const prefix = name.startsWith('@') ? '' : '@/' yield { - hash: `${name}/${version}/${hexDigest}`, + hash: `${prefix}${name}/${version}/${hexDigest}`, pkgMeta, } }