From a0e46ccad06988a3eb26a46c123db875889318ea Mon Sep 17 00:00:00 2001 From: Nicolas Bonet Date: Tue, 25 Aug 2026 08:31:13 -0500 Subject: [PATCH 1/3] Enforce npm 11.10.0 minimum via engines and engine-strict --- .gitignore | 3 --- .npmrc | 1 + .nvmrc | 2 +- package-lock.json | 2 +- package.json | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 .npmrc diff --git a/.gitignore b/.gitignore index a46d06d84..3f223cbf2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,9 +6,6 @@ node_modules/ npm-debug.log dist/ -# NPM file created by GitHub actions -.npmrc - # IDEs .idea diff --git a/.npmrc b/.npmrc new file mode 100644 index 000000000..b6f27f135 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.nvmrc b/.nvmrc index 0a492611a..60ade1ae0 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -24.11.0 +24.19.0 diff --git a/package-lock.json b/package-lock.json index a80945549..3f1cfbd81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -70,7 +70,7 @@ }, "engines": { "node": ">=20.19.5", - "npm": ">=10.8.2" + "npm": ">=11.10.0" }, "peerDependencies": { "idb-keyval": "^6.2.1", diff --git a/package.json b/package.json index f3585d144..98eaf01e5 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ }, "engines": { "node": ">=20.19.5", - "npm": ">=10.8.2" + "npm": ">=11.10.0" }, "sideEffects": false } From 041201c3c8cf983af1fffe481c136176d1d5d7e3 Mon Sep 17 00:00:00 2001 From: Nicolas Bonet Date: Tue, 25 Aug 2026 08:46:36 -0500 Subject: [PATCH 2/3] Move npm floor to devEngines so it only applies to this repo --- package-lock.json | 2 +- package.json | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3f1cfbd81..a80945549 100644 --- a/package-lock.json +++ b/package-lock.json @@ -70,7 +70,7 @@ }, "engines": { "node": ">=20.19.5", - "npm": ">=11.10.0" + "npm": ">=10.8.2" }, "peerDependencies": { "idb-keyval": "^6.2.1", diff --git a/package.json b/package.json index 98eaf01e5..8003dd9a5 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,14 @@ }, "engines": { "node": ">=20.19.5", - "npm": ">=11.10.0" + "npm": ">=10.8.2" }, - "sideEffects": false + "sideEffects": false, + "devEngines": { + "packageManager": { + "name": "npm", + "version": ">=11.10.0", + "onFail": "error" + } + } } From 1aae36ecd08d05c5810196ba16491fb7329dc74b Mon Sep 17 00:00:00 2001 From: Nicolas Bonet Date: Tue, 25 Aug 2026 09:19:53 -0500 Subject: [PATCH 3/3] Re-setup Node after switching to PR head in perf tests The perf workflow installs Node from the base branch's .nvmrc, then switches to the PR head without re-running setup-node. When a PR bumps the Node/npm requirements (as this one does via devEngines), the reinstall step fails with EBADDEVENGINES because npm is still the base branch's version. Co-Authored-By: Claude Fable 5 --- .github/workflows/reassurePerfTests.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reassurePerfTests.yml b/.github/workflows/reassurePerfTests.yml index ce96e0c4e..20d160d99 100644 --- a/.github/workflows/reassurePerfTests.yml +++ b/.github/workflows/reassurePerfTests.yml @@ -43,7 +43,13 @@ jobs: run: | git fetch origin ${{ github.event.pull_request.head.sha }} --no-tags --depth=1 git switch --force --detach ${{ github.event.pull_request.head.sha }} - + + # v4 — re-run setup so Node/npm match the PR's .nvmrc, which may differ from the base branch + - name: Setup Node for PR head + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e + with: + node-version-file: '.nvmrc' + - name: Reinstall dependencies run: npm ci