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.
Monorepo Migration: Yarn → pnpm
This PR migrates the frontend workspace from Yarn to pnpm, establishing a more performant and efficient package management system.
Summary
Key Changes
Package Management
.yarnrc.yml,yarn.lock, and Yarn pluginspnpm-workspace.yamlandpnpm-lock.yaml.npmrcwith pnpm-specific configurationpackage.jsonscripts to use pnpm commandspackageManagerfield from[email protected]to[email protected]Build & Tooling
.prettierrc.json) and ignore rulestsconfig.base.json)package.jsonfiles for pnpm compatibilityCI/CD
Documentation
MONOREPO_MIGRATION.md,MONOREPO_MIGRATION_NIX.md)CLAUDE.mdwith new pnpm commandsAGENTS.mdwith new agent configurationsDevelopment Experience
./devscript to support pnpmPackage.json Script Changes
yarn web:test && yarn shared:testpnpm run test:web && pnpm run test:sharedyarn workspace @shm/shared testpnpm --filter=@shm/shared testyarn workspace @shm/web testpnpm --filter=@shm/web testyarn workspace @shm/desktop testpnpm --filter=@shm/desktop testyarn workspace @shm/shared build:types && yarn workspaces foreach -pt run typecheckpnpm -r --filter='./frontend/**' run typecheckpnpm --filter=@shm/web typecheckpnpm --filter=@shm/desktop typecheckyarn workspaces foreach -pt run format:checkprettier --check .yarn workspaces foreach -pt run format:writeprettier --write .yarn npm auditpnpm audityarn npm audit --environment developmentpnpm audit --devcd frontend/apps/web && ... yarn devpnpm --filter=@shm/web devSEED_IDENTITY_ENABLED=true ... pnpm --filter=@shm/web devSEED_BASE_URL=${CUSTOM_DOMAIN:-...} pnpm --filter=@shm/web dev --host... yarn web:start --host... pnpm --filter=@shm/web dev --hostyarn workspace @shm/web buildpnpm --filter=@shm/web buildyarn web:prod && yarn web:startpnpm build:web && pnpm --filter=@shm/web start:prodpnpm build:web && SEED_IDENTITY_ENABLED=true pnpm --filter=@shm/web start:prodyarn workspace @shm/desktop devpnpm --filter=@shm/desktop devVITE_DESKTOP_HTTP_PORT=53001 ... pnpm --filter=@shm/desktop devconcurrently ... "yarn watch"concurrently ... "pnpm watch"yarn workspace @shm/desktop packagepnpm --filter=@shm/desktop packageyarn workspace @shm/desktop makepnpm --filter=@shm/desktop makeyarn workspace @shm/desktop publishpnpm --filter=@shm/desktop publishyarn workspace @shm/desktop devtoolspnpm --filter=@shm/desktop devtoolsyarn workspace @shm/performance testpnpm --filter=@shm/performance testyarn workspace @shm/explore devpnpm --filter=@shm/explore devyarn workspace @shm/explore buildpnpm --filter=@shm/explore buildyarn workspace @shm/landing devpnpm --filter=@shm/landing devyarn workspace @shm/landing buildpnpm --filter=@shm/landing buildyarn workspace @shm/landing previewpnpm --filter=@shm/landing previewyarn workspace @shm/docs startpnpm --filter=@shm/docs startyarn workspace @shm/perf-web start --url ...pnpm --filter=@shm/perf-web start --url ...yarn workspace @shm/perf-web start --url ...pnpm --filter=@shm/perf-web start --url ...yarn workspace @shm/perf-web generate-index && ...pnpm --filter=@shm/perf-web generate-index && ...yarn workspace @shm/performance-dashboard ...pnpm --filter=@shm/performance-dashboard ...yarn workspaces foreach -pi run watchpnpm -r --parallel run watchpnpm -r exec rm -rf dist node_modules .turborm -rf node_modules pnpm-lock.yaml && pnpm -r exec rm -rf node_modulesKey Command Pattern Changes
yarn workspace <name> <cmd>→pnpm --filter=<name> <cmd>yarn workspaces foreach -pt run <cmd>→pnpm -r run <cmd>(recursive)yarn workspaces foreach -pi run <cmd>→pnpm -r --parallel run <cmd>yarn npm audit→pnpm auditTest Plan
Migration Impact
This is a significant infrastructure change that affects all developers. After merging:
npm install -g pnpmpnpm installyarncommands should be replaced withpnpmequivalents (see table above)Additional Notes
--filteris more explicit than Yarn's workspace commandspnpm.overridessection replaces Yarn's resolutions for React and other pinned dependenciesonlyBuiltDependenciesconfiguration helps control which packages need build steps