From b4665d35cf25039728b5c9e11a440795c993330b Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Mon, 25 Oct 2021 11:29:55 +0200
Subject: [PATCH] fix(npm): skip Node 17 unless allowing unstable (#12306)

---
 lib/manager/npm/post-update/node-version.spec.ts | 2 +-
 lib/manager/npm/post-update/node-version.ts      | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lib/manager/npm/post-update/node-version.spec.ts b/lib/manager/npm/post-update/node-version.spec.ts
index 08db7fa911..617ce7d988 100644
--- a/lib/manager/npm/post-update/node-version.spec.ts
+++ b/lib/manager/npm/post-update/node-version.spec.ts
@@ -36,7 +36,7 @@ describe('manager/npm/post-update/node-version', () => {
       ...config,
       constraints: { node: '>= 12.16.0' },
     });
-    const isAugmentedRange = res === '>=15';
+    const isAugmentedRange = res === '>=15 <17';
     const node16IsStable = isStable('16.100.0');
     expect(isAugmentedRange || node16IsStable).toBe(true);
   });
diff --git a/lib/manager/npm/post-update/node-version.ts b/lib/manager/npm/post-update/node-version.ts
index 8c44d201ea..30d11b1385 100644
--- a/lib/manager/npm/post-update/node-version.ts
+++ b/lib/manager/npm/post-update/node-version.ts
@@ -57,8 +57,8 @@ export async function getNodeConstraint(
       !isStable('16.100.0')
     ) {
       if (lockfileVersion === 2) {
-        logger.debug('Forcing node 15 to ensure lockfileVersion=2 is used');
-        constraint = '>=15';
+        logger.debug('Forcing node 15+ to ensure lockfileVersion=2 is used');
+        constraint = '>=15 <17';
       } else if (validRange(`${constraint} <15`)) {
         logger.debug('Augmenting constraint to avoid node 15');
         constraint = `${constraint} <15`;
-- 
GitLab