Skip to content

fix(release): --legacy-peer-deps when refreshing infra lockfiles#210

Merged
sirdeggen merged 1 commit into
mainfrom
fix/release-infra-lockfile-peerdeps
Jun 19, 2026
Merged

fix(release): --legacy-peer-deps when refreshing infra lockfiles#210
sirdeggen merged 1 commit into
mainfrom
fix/release-infra-lockfile-peerdeps

Conversation

@sirdeggen

Copy link
Copy Markdown
Contributor

Problem

The Release workflow's Sync published workspace versions step fails at the infra lockfile refresh:

npm error ERESOLVE could not resolve
npm error While resolving: eslint-plugin-react@7.37.5
npm error Found: eslint@10.4.1
npm error peer eslint@"^3 || ... || ^9.7" from eslint-plugin-react@7.37.5

The step loops over infra/*/ running npm install --package-lock-only --ignore-scripts to refresh @bsv/* ranges after sync-versions. infra/message-box-server carries transitional lint devDeps (eslint@^10 alongside eslint-plugin-react@^7.37.4 + ts-standard@^12, whose plugin-react peer caps at eslint 9.7) → npm ERESOLVE → whole release fails.

This is pre-existing — the same step also failed the releases for #203 and #204. It is not specific to the PR that triggered this run.

Fix

Add --legacy-peer-deps to that npm install --package-lock-only step. The step only regenerates lockfiles (no lint executes; --ignore-scripts), so accepting the legacy peer resolution for a dev-only dependency graph is appropriate and unblocks the release. Packages without peer conflicts are unaffected.

Not done (out of scope)

  • Realigning infra/message-box-server's eslint/ts-standard stack (eslint 10 vs ts-standard 12 / eslint-plugin-react 7.37.x) — the real upstream mismatch; tracked as a follow-up.
  • The separately-circulated suggestion to switch npm installpnpm install for mobile/client dirs does not apply to this repo: there are no mobile/client dirs, the failure is ERESOLVE (not EUNSUPPORTEDPROTOCOL), and infra components require npm package-lock.json for their Docker npm ci.

🤖 Generated with Claude Code

The "Sync published workspace versions" step runs `npm install
--package-lock-only` in each infra/*/ dir to refresh stale @bsv/* ranges
after sync-versions. infra/message-box-server carries transitional lint
devDeps with a peer conflict (eslint-plugin-react@7.37.x peers eslint
<=9.7, but the package pins eslint 10), causing npm ERESOLVE and failing
the release (also broke releases for #203 and #204).

This step only regenerates the lockfile (--package-lock-only
--ignore-scripts); no lint runs here, so accept the legacy peer
resolution instead of failing the whole release on a dev-only graph.

Deeper fix (realigning message-box-server's eslint/ts-standard stack) is
a separate follow-up.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@sirdeggen sirdeggen merged commit b2d142c into main Jun 19, 2026
10 checks passed
@sonarqubecloud

Copy link
Copy Markdown

sirdeggen added a commit that referenced this pull request Jun 20, 2026
…--legacy-peer-deps from sync

After the @bsv/sdk peerDependency refactor, infra apps that consume a
peer-dep'd lib (e.g. chaintracks -> @bsv/wallet-toolbox) must record
@bsv/sdk in their package-lock.json. The release sync-versions step
refreshed infra lockfiles with --legacy-peer-deps, which drops peer deps,
so `npm ci` in the Docker build failed:
  chaintracks: Missing: @bsv/sdk@2.1.6 from lock file
  message-box: Missing: openapi-types@12.1.3 from lock file

- Regenerate both lockfiles peer-aware (node:20 npm, no --legacy-peer-deps);
  @bsv/sdk now present. Both Docker images build locally (linux/amd64).
- Remove --legacy-peer-deps from the sync-versions infra refresh — it was
  added in #210 for a message-box eslint peer conflict that #212 already
  removed, and it now actively breaks peer-aware lockfiles.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant