From 7478cbd05337a0e0a120bfdafa23d37b3198c3d7 Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Wed, 27 Apr 2022 11:34:20 +0300 Subject: [PATCH] fix: don't fail when moving packages to node_modules/.ignored (#4626) --- .changeset/strong-bears-own.md | 6 ++++++ packages/resolve-dependencies/package.json | 1 + packages/resolve-dependencies/src/safeIsInnerLink.ts | 5 ++--- pnpm-lock.yaml | 2 ++ 4 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 .changeset/strong-bears-own.md 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 5d086f57265..d1f695f64e7 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 e56c8ee9316..6e9a71d7d87 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3186,6 +3186,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 @@ -3214,6 +3215,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