From 26413c30ccd28663e929323f0d29f8b337b674ae Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Tue, 7 Jun 2022 01:08:11 +0300 Subject: [PATCH] fix: don't report the same deprecated package multiple times (#4863) --- .changeset/tiny-jeans-add.md | 6 ++++++ .../src/resolveDependencies.ts | 21 ++++++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 .changeset/tiny-jeans-add.md diff --git a/.changeset/tiny-jeans-add.md b/.changeset/tiny-jeans-add.md new file mode 100644 index 0000000000..ea77098129 --- /dev/null +++ b/.changeset/tiny-jeans-add.md @@ -0,0 +1,6 @@ +--- +"@pnpm/resolve-dependencies": patch +"pnpm": patch +--- + +Report only the first occurence of a deprecated package. diff --git a/packages/resolve-dependencies/src/resolveDependencies.ts b/packages/resolve-dependencies/src/resolveDependencies.ts index 8a5721498a..2a4def14f7 100644 --- a/packages/resolve-dependencies/src/resolveDependencies.ts +++ b/packages/resolve-dependencies/src/resolveDependencies.ts @@ -877,16 +877,6 @@ async function resolveDependency ( if (options.currentDepth === 0 && pkgResponse.body.latest && pkgResponse.body.latest !== pkg.version) { ctx.outdatedDependencies[pkgResponse.body.id] = pkgResponse.body.latest } - if (pkg.deprecated) { - deprecationLogger.debug({ - deprecated: pkg.deprecated, - depth: options.currentDepth, - pkgId: pkgResponse.body.id, - pkgName: pkg.name, - pkgVersion: pkg.version, - prefix: ctx.prefix, - }) - } // In case of leaf dependencies (dependencies that have no prod deps or peer deps), // we only ever need to analyze one leaf dep in a graph, so the nodeId can be short and stateless. @@ -899,6 +889,17 @@ async function resolveDependency ( const isNew = !ctx.resolvedPackagesByDepPath[depPath] if (isNew) { + if (pkg.deprecated) { + // Report deprecated packages only on first occurrence. + deprecationLogger.debug({ + deprecated: pkg.deprecated, + depth: options.currentDepth, + pkgId: pkgResponse.body.id, + pkgName: pkg.name, + pkgVersion: pkg.version, + prefix: ctx.prefix, + }) + } if (pkgResponse.body.isInstallable === false || !parentIsInstallable) { ctx.skipped.add(pkgResponse.body.id) }