Skip to content

Migrate monorepo from npm to pnpm#669

Merged
waleedkadous merged 1 commit intomainfrom
chore/pnpm-migration
Apr 14, 2026
Merged

Migrate monorepo from npm to pnpm#669
waleedkadous merged 1 commit intomainfrom
chore/pnpm-migration

Conversation

@amrmelsayed
Copy link
Copy Markdown
Collaborator

@amrmelsayed amrmelsayed commented Apr 14, 2026

Summary

  • Strict dependency isolation prevents phantom dependency issues as the monorepo grows (vscode extension, future desktop app)
  • Faster CI installs via content-addressable store and pnpm caching
  • Smaller node_modules through symlinked global store instead of copies
  • workspace:* protocol auto-replaces with real versions at publish time
  • Built-in workspace filtering (--filter) for targeted package operations

Changes

  • Add pnpm-workspace.yaml with onlyBuiltDependencies for native modules (node-pty, better-sqlite3, esbuild, protobufjs)
  • Convert workspace deps from "*" to "workspace:*" protocol
  • Update all package.json scripts from npm run to pnpm
  • Replace npm-run-all with pnpm's built-in parallel regex matching in vscode package
  • Update CI workflows (test, e2e, dashboard-e2e) with pnpm/action-setup and cache: 'pnpm'
  • Update release protocol, CLAUDE.md, AGENTS.md for pnpm commands
  • Delete package-lock.json, add pnpm-lock.yaml
  • post-release-e2e.yml intentionally unchanged (tests published npm packages)

After merge — developer setup

npm install -g pnpm@latest   # if not already installed
rm -rf node_modules
pnpm install

Test plan

  • pnpm install succeeds from repo root
  • pnpm build succeeds in packages/codev (includes dashboard build + skeleton copy)
  • All 2442 unit tests pass
  • node-pty postinstall hook resolves correctly under pnpm
  • Native modules (better-sqlite3, node-pty, esbuild) build successfully
  • CI workflows pass on this PR
  • Tower starts and dashboard loads after global install

- Strict dependency isolation prevents phantom dependency issues as the
  monorepo grows (vscode extension, future desktop app)
- Faster CI installs via content-addressable store and pnpm caching
- Smaller node_modules through symlinked global store instead of copies
- workspace:* protocol auto-replaces with real versions at publish time
- Built-in workspace filtering (--filter) for targeted package operations

Changes:
- Add pnpm-workspace.yaml with onlyBuiltDependencies for native modules
- Convert workspace deps from "*" to "workspace:*" protocol
- Update all package.json scripts from npm run to pnpm
- Replace npm-run-all with pnpm's built-in parallel regex matching
- Update CI workflows (test, e2e, dashboard-e2e) with pnpm/action-setup
- Update release protocol, CLAUDE.md, AGENTS.md for pnpm commands
- Delete package-lock.json, add pnpm-lock.yaml
@waleedkadous waleedkadous merged commit 386f68b into main Apr 14, 2026
6 checks passed
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.

2 participants