From 189e39bcfc806f8af4a364bb121e0cfbee37b624 Mon Sep 17 00:00:00 2001
From: Philip <42116482+PhilipAbed@users.noreply.github.com>
Date: Thu, 18 Aug 2022 20:08:51 +0300
Subject: [PATCH] fix(npm): issue with npm lerna deleting unrelated lockfile
 files (#17233)

---
 .../manager/npm/post-update/index.spec.ts     | 23 +++++++++++++++++++
 lib/modules/manager/npm/post-update/index.ts  |  3 +++
 2 files changed, 26 insertions(+)

diff --git a/lib/modules/manager/npm/post-update/index.spec.ts b/lib/modules/manager/npm/post-update/index.spec.ts
index 19b2b2d4f1..4ac567e6e3 100644
--- a/lib/modules/manager/npm/post-update/index.spec.ts
+++ b/lib/modules/manager/npm/post-update/index.spec.ts
@@ -78,6 +78,16 @@ describe('modules/manager/npm/post-update/index', () => {
           npmLock: 'package-lock.json',
           rangeStrategy: 'widen',
         },
+        {
+          depName: 'core-js',
+          isRemediation: true,
+          managerData: {
+            lernaJsonFile: 'lerna.json',
+          },
+          npmLock: 'randomFolder/package-lock.json',
+          lockFiles: ['randomFolder/package-lock.json'],
+          rangeStrategy: 'pin',
+        },
         {
           isLockfileUpdate: true,
           npmLock: 'package-lock.json',
@@ -209,6 +219,19 @@ describe('modules/manager/npm/post-update/index', () => {
       ]);
     });
 
+    it('works only on relevant folders', async () => {
+      git.getFile.mockResolvedValueOnce(
+        Fixtures.get('update-lockfile-massage-1/package-lock.json')
+      );
+      await expect(
+        writeExistingFiles(updateConfig, additionalFiles)
+      ).resolves.toBeUndefined();
+
+      expect(fs.writeLocalFile).toHaveBeenCalledTimes(2);
+      expect(fs.deleteLocalFile).not.toHaveBeenCalled();
+      expect(git.getFile).toHaveBeenCalledOnce();
+    });
+
     it('has no npm files', async () => {
       await expect(writeExistingFiles(baseConfig, {})).toResolve();
     });
diff --git a/lib/modules/manager/npm/post-update/index.ts b/lib/modules/manager/npm/post-update/index.ts
index f1c8636996..0f15c4fc41 100644
--- a/lib/modules/manager/npm/post-update/index.ts
+++ b/lib/modules/manager/npm/post-update/index.ts
@@ -180,6 +180,9 @@ export async function writeExistingFiles(
           const widens: string[] = [];
           let lockFileChanged = false;
           for (const upgrade of config.upgrades) {
+            if (upgrade.lockFiles && !upgrade.lockFiles.includes(npmLock)) {
+              continue;
+            }
             if (
               upgrade.rangeStrategy === 'widen' &&
               upgrade.npmLock === npmLock
-- 
GitLab