diff --git a/.changeset/strong-bears-own.md b/.changeset/strong-bears-own.md new file mode 100644 index 00000000000..ca50a9decf6 --- /dev/null +++ b/.changeset/strong-bears-own.md @@ -0,0 +1,6 @@ +--- +"@pnpm/resolve-dependencies": patch +"pnpm": patch +--- + +Installation shouldn't fail when a package from node_modules is moved to the `node_modules/.ignored` subfolder and a package with that name is already present in `node_modules/.ignored'. diff --git a/packages/resolve-dependencies/package.json b/packages/resolve-dependencies/package.json index aa0c6264da8..5e81b45f2ae 100644 --- a/packages/resolve-dependencies/package.json +++ b/packages/resolve-dependencies/package.json @@ -52,6 +52,7 @@ "is-subdir": "^1.1.1", "path-exists": "^4.0.0", "ramda": "^0.27.1", + "rename-overwrite": "^4.0.2", "replace-string": "^3.1.0", "semver": "^7.3.4", "semver-range-intersect": "^0.3.1", diff --git a/packages/resolve-dependencies/src/safeIsInnerLink.ts b/packages/resolve-dependencies/src/safeIsInnerLink.ts index eb55a315d6a..f88355b03ef 100644 --- a/packages/resolve-dependencies/src/safeIsInnerLink.ts +++ b/packages/resolve-dependencies/src/safeIsInnerLink.ts @@ -1,8 +1,8 @@ -import { promises as fs } from 'fs' import path from 'path' import logger from '@pnpm/logger' import isInnerLink from 'is-inner-link' import isSubdir from 'is-subdir' +import renameOverwrite from 'rename-overwrite' export default async function safeIsInnerLink ( projectModulesDir: string, @@ -30,8 +30,7 @@ export default async function safeIsInnerLink ( prefix: opts.projectDir, }) const ignoredDir = path.join(projectModulesDir, '.ignored', depName) - await fs.mkdir(path.dirname(ignoredDir), { recursive: true }) - await fs.rename( + await renameOverwrite( path.join(projectModulesDir, depName), ignoredDir ) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fbf11189df6..9984a637016 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3179,6 +3179,7 @@ importers: is-subdir: ^1.1.1 path-exists: ^4.0.0 ramda: ^0.27.1 + rename-overwrite: ^4.0.2 replace-string: ^3.1.0 semver: ^7.3.4 semver-range-intersect: ^0.3.1 @@ -3207,6 +3208,7 @@ importers: is-subdir: 1.2.0 path-exists: 4.0.0 ramda: 0.27.2 + rename-overwrite: 4.0.2 replace-string: 3.1.0 semver: 7.3.7 semver-range-intersect: 0.3.1