name: monorepo-management
description: Nx, Turborepo, and Lerna workflows for monorepo management. Use for large-scale projects with multiple packages.
๐ฆ Monorepo Management Skill
Tools Comparison
| Feature |
Nx |
Turborepo |
Lerna |
| Caching |
โ
Local + Remote |
โ
Local + Remote |
โ |
| Affected |
โ
Built-in |
โ ๏ธ Manual |
โ ๏ธ Limited |
| Generators |
โ
Rich |
โ None |
โ None |
| Learning |
Steep |
Easy |
Easy |
Turborepo Setup
npx create-turbo@latest
turbo.json
{
"$schema": "https://turbo.build/schema.json",
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"lint": {},
"test": {
"dependsOn": ["build"]
}
}
}
Commands
turbo run build # Build all packages
turbo run build --filter=web # Build specific package
turbo run lint test # Run multiple tasks
Nx Setup
npx create-nx-workspace@latest myorg
nx.json
{
"targetDefaults": {
"build": {
"dependsOn": ["^build"],
"cache": true
}
}
}
Commands
nx build web # Build specific project
nx affected:build # Build affected only
nx graph # Visualize dependencies
nx generate @nx/react:component button --project=ui
Package Structure
monorepo/
โโโ apps/
โ โโโ web/ # Next.js app
โ โโโ admin/ # Admin dashboard
โ โโโ api/ # Backend API
โโโ packages/
โ โโโ ui/ # Shared components
โ โโโ utils/ # Shared utilities
โ โโโ config/ # Shared configs
โโโ turbo.json
โโโ package.json
Workspace Setup
pnpm-workspace.yaml
packages:
- 'apps/*'
- 'packages/*'
Internal Packages
// packages/ui/package.json
{
"name": "@myorg/ui",
"main": "./src/index.ts"
}
// apps/web/package.json
{
"dependencies": {
"@myorg/ui": "workspace:*"
}
}
Checklist