From eb1947576f05ba4b80ea408d8accebde69f54d92 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Fri, 19 Apr 2024 02:46:05 +0200 Subject: [PATCH] fix: resolution of aliased dependencies (#7967) close #7957 --- .changeset/two-points-peel.md | 6 ++++++ pkg-manager/resolve-dependencies/src/resolveDependencies.ts | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/two-points-peel.md diff --git a/.changeset/two-points-peel.md b/.changeset/two-points-peel.md new file mode 100644 index 0000000000..91cbede4e8 --- /dev/null +++ b/.changeset/two-points-peel.md @@ -0,0 +1,6 @@ +--- +"@pnpm/resolve-dependencies": patch +"pnpm": patch +--- + +Fix aliased dependencies resolution on repeat install with existing lockfile [#7957](https://github.com/pnpm/pnpm/issues/7957). diff --git a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts index f9e9b5d5ed..7e16adf927 100644 --- a/pkg-manager/resolve-dependencies/src/resolveDependencies.ts +++ b/pkg-manager/resolve-dependencies/src/resolveDependencies.ts @@ -1139,7 +1139,11 @@ async function resolveDependency ( } try { if (!options.update && currentPkg.version && currentPkg.pkgId?.endsWith(`@${currentPkg.version}`)) { - wantedDependency.pref = currentPkg.version + if (semver.validRange(wantedDependency.pref)) { + wantedDependency.pref = currentPkg.version + } else if (wantedDependency.pref.startsWith('npm:')) { + wantedDependency.pref = `${wantedDependency.pref.substring(0, wantedDependency.pref.lastIndexOf('@') + 1)}${currentPkg.version}` + } } pkgResponse = await ctx.storeController.requestPackage(wantedDependency, { alwaysTryWorkspacePackages: ctx.linkWorkspacePackagesDepth >= options.currentDepth,