diff --git a/.changeset/blue-laws-flow.md b/.changeset/blue-laws-flow.md new file mode 100644 index 0000000000..9938766051 --- /dev/null +++ b/.changeset/blue-laws-flow.md @@ -0,0 +1,5 @@ +--- +"@pnpm/resolve-dependencies": patch +--- + +Check the existense of a dependency in `node_modules` at the right location. diff --git a/packages/resolve-dependencies/package.json b/packages/resolve-dependencies/package.json index 33fd840f23..b233ea4dfa 100644 --- a/packages/resolve-dependencies/package.json +++ b/packages/resolve-dependencies/package.json @@ -34,6 +34,7 @@ "@pnpm/npm-resolver": "workspace:8.0.0-alpha.1", "@pnpm/package-is-installable": "workspace:4.0.7", "@pnpm/pick-registry-for-package": "workspace:1.0.0", + "@pnpm/pkgid-to-filename": "^3.0.0-0", "@pnpm/resolver-base": "workspace:7.0.0", "@pnpm/store-controller-types": "workspace:8.0.0-alpha.2", "@pnpm/types": "workspace:5.0.0", diff --git a/packages/resolve-dependencies/src/resolveDependencies.ts b/packages/resolve-dependencies/src/resolveDependencies.ts index 1a10754ead..4c66dcff1d 100644 --- a/packages/resolve-dependencies/src/resolveDependencies.ts +++ b/packages/resolve-dependencies/src/resolveDependencies.ts @@ -17,6 +17,7 @@ import { import logger from '@pnpm/logger' import packageIsInstallable from '@pnpm/package-is-installable' import pickRegistryForPackage from '@pnpm/pick-registry-for-package' +import pkgIdToFilename from '@pnpm/pkgid-to-filename' import { DirectoryResolution, PreferredVersions, @@ -503,7 +504,7 @@ async function resolveDependency ( // we can safely assume that it doesn't exist in `node_modules` currentLockfileContainsTheDep && options.relDepPath && options.dependencyLockfile && - await exists(path.join(ctx.virtualStoreDir, `${options.depPath}/node_modules/${nameVerFromPkgSnapshot(options.relDepPath, options.dependencyLockfile).name}/package.json`)) && + await exists(path.join(ctx.virtualStoreDir, `${pkgIdToFilename(options.depPath, ctx.prefix)}/node_modules/${nameVerFromPkgSnapshot(options.relDepPath, options.dependencyLockfile).name}/package.json`)) && (options.currentDepth > 0 || wantedDependency.alias && await exists(path.join(ctx.modulesDir, wantedDependency.alias)))) if (!proceed && depIsLinked) { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db5d91d1f4..84b434385d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2385,6 +2385,7 @@ importers: '@pnpm/npm-resolver': 'link:../npm-resolver' '@pnpm/package-is-installable': 'link:../package-is-installable' '@pnpm/pick-registry-for-package': 'link:../pick-registry-for-package' + '@pnpm/pkgid-to-filename': 3.0.0-0 '@pnpm/resolver-base': 'link:../resolver-base' '@pnpm/store-controller-types': 'link:../store-controller-types' '@pnpm/types': 'link:../types' @@ -2407,6 +2408,7 @@ importers: '@pnpm/npm-resolver': 'workspace:8.0.0-alpha.1' '@pnpm/package-is-installable': 'workspace:4.0.7' '@pnpm/pick-registry-for-package': 'workspace:1.0.0' + '@pnpm/pkgid-to-filename': ^3.0.0-0 '@pnpm/resolve-dependencies': 'link:' '@pnpm/resolver-base': 'workspace:7.0.0' '@pnpm/store-controller-types': 'workspace:8.0.0-alpha.2'