pnpm/pnpm · error · PnpmError
VERSIONING_DUPLICATE_RELEASE
VERSIONING_DUPLICATE_RELEASE
Error message
Two projects both release ${identity}: ./${other} and ./${release.dir}. A package name and version identify one published artifact, so same-named projects must release on different version lines (e.g. different lanes or majors). What it means
Error "Two projects both release ${identity}: ./${other} and ./${release.dir}. A package name and version identify one published artifact, so same-named projects must release on different version lines (e.g. different lanes or majors)." thrown in pnpm/pnpm.
Source
Thrown at pnpm11/releasing/versioning/src/assembleReleasePlan.ts:362
}
return { releases }
}
/**
* A published `package@version` identifies exactly one artifact, so two
* projects that share a name cannot both release the same version — the
* registry would reject the second publish, and the name-keyed ledger entry
* would collide. Caught here, before any manifest is written, naming both
* directories.
*/
function assertNoDuplicateReleaseIdentity (releases: PlannedRelease[]): void {
const byIdentity = new Map<string, string>()
for (const release of releases) {
const identity = `${release.name}@${release.newVersion}`
const other = byIdentity.get(identity)
if (other != null) {
throw new PnpmError(
'VERSIONING_DUPLICATE_RELEASE',
`Two projects both release ${identity}: ./${other} and ./${release.dir}. ` +
'A package name and version identify one published artifact, so same-named projects must release on different version lines (e.g. different lanes or majors).'
)
}
byIdentity.set(identity, release.dir)
}
}
function collectParticipants (
projects: WorkspaceProject[],
refs: ProjectRefIndex,
opts: AssembleReleasePlanOptions
): Map<string, Participant> {
const ignoredDirs = new Set<string>()
for (const ref of opts.versioning?.ignore ?? []) {
for (const dir of resolveConfigRef(refs, ref, 'versioning.ignore')) {
ignoredDirs.add(dir)View on GitHub (pinned to 6261b7f388)
When it happens
Trigger: Thrown at pnpm11/releasing/versioning/src/assembleReleasePlan.ts:362 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pnpm/pnpm@6261b7f388 (2026-08-17).
Data as JSON: /api/errors/7257bccbac6ee57b.
Report an issue: GitHub.