chore: replace Rush with pnpm workspaces and move to Node 22 - #58
Open
jrhender wants to merge 1 commit into
Open
chore: replace Rush with pnpm workspaces and move to Node 22#58jrhender wants to merge 1 commit into
jrhender wants to merge 1 commit into
Conversation
This was referenced Jul 3, 2026
Migrate the monorepo from Rush 5.100/pnpm 8 to plain pnpm workspaces: - root pnpm-workspace.yaml with a catalog for shared dependency versions (replaces Rush's ensureConsistentVersions) and a single root lockfile - delete rush.json and common/ (config, scripts, autoinstallers); the pre-commit hook moves to .githooks wired up via git core.hooksPath - pnpm patch for @credo-ts/core moves to patches/ Node 18 -> 22 (.nvmrc, CI, Dockerfile). Node 22 rather than 24 because Credo 0.5's native bindings (@2060.io/ref-napi) only have prebuilds up to Node 22 and fail to compile with Debian bookworm's gcc; the Credo 0.7 migration removes those bindings and will bump to Node 24. CI now uses pnpm/action-setup + setup-node@v5 with pnpm caching. The Dockerfile installs with pnpm and replaces 'rush deploy' with 'pnpm deploy'. Version pins needed to keep behaviour identical while regenerating the lockfile from scratch: - @credo-ts/* pinned to 0.5.10 (the version the removed patch targets) - @nestjs/config ~3.2.3 (3.3.0 makes forRoot async) - class-validator 0.14.1 override (0.14.2+ changes nested validation) - reflect-metadata ^0.1.13 everywhere (auto-installed 0.2.x peers split @nestjs/core into multiple instances and broke DI in tests/e2e) - @peculiar/asn1-schema + webcrypto-core overrides (newer versions need TypeScript >= 5 type resolution; remove with the TS upgrade) axios ~1.4 -> ~1.18 because 1.4 throws 'Invalid URL' on Node >= 24 and newer Node 22 releases. Part of #57 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: John Henderson <jrhender@users.noreply.github.com>
jrhender
force-pushed
the
chore/pnpm-workspaces-node22
branch
from
July 3, 2026 13:18
57f8efe to
354d97e
Compare
nichonien
approved these changes
Jul 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
First of five stacked PRs for #57.
pnpm-workspace.yamlwith a catalog for shared dependency versions (the pnpm-native replacement for Rush'sensureConsistentVersions), a single root lockfile, and rootbuild/testscripts.rush.jsonandcommon/are gone; the pre-commit hook (openapi regen + pretty-quick) moved to.githooks/wired viacore.hooksPath; the Credo pnpm patch moved topatches/.@2060.io/ref-napi) only ship prebuilds up to Node 22 and fail to compile with Debian bookworm's gcc; the Credo 0.7 PR in this stack removes those bindings and bumps to Node 24.pnpm/action-setup+setup-node@v5with pnpm caching; the Dockerfile installs with pnpm and replacesrush deploywithpnpm deploy --legacy.@credo-ts/*0.5.10 (the patched version),@nestjs/config~3.2.3,class-validator0.14.1 (0.14.2+ changes nested validation),reflect-metadata^0.1 everywhere (mixed 0.1/0.2 peers split@nestjs/coreinto multiple DI-incompatible instances),@peculiar/*type pins (removed by the TS 5.9 PR).axios~1.4 → ~1.18: 1.4 throwsInvalid URLon newer Node.Verification
pnpm install,pnpm run build, all unit suites, the did library suite and the standalone e2e project pass on Node 22Part of #57
🤖 Generated with Claude Code