Monorepos (single repo, multiple projects) reduce friction but add complexity. The skill is structuring workspaces, managing dependencies, and enabling independent deployment.
When to Use
- Multiple related services (API, web app, CLI) in one repo
- Shared libraries and utilities
- Coordinating changes across services
Decision Framework for Lerna, Nx, Turborepo, or pnpm Workspaces
- Clear folder structure. /packages/api, /packages/web, /packages/shared. Each package has own package.json.
- Shared libraries via symlink. Monorepo tool symlinks shared packages into node_modules. Code changes instantly reflected.
- Build graph for incremental builds. Only rebuild packages that changed. If shared library changed, rebuild dependents.
- Publishing from monorepo. Each package has version, changelog, publish trigger. Coordinated but independent releases.