monorepo-management
Créer et gérer des monorepos évolutifs avec Turborepo et pnpm
Également disponible depuis: wshobson
La gestion de plusieurs packages dans des référentiels séparés crée de la complexité et des incohérences. Cette compétence fournit des patterns éprouvés pour la configuration de monorepos avec Turborepo, Nx et les espaces de travail pnpm afin d'enable le partage de code et des builds efficaces.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "monorepo-management". Configurer une structure de monorepo Turborepo
Résultat attendu:
Monorepo créé avec apps/web (Next.js), apps/docs (Next.js), packages/ui (composants React), packages/config (configurations partagées) et packages/tsconfig (configurations TypeScript). turbo.json configuré avec les pipelines build, test, lint et dev.
Utilisation de "monorepo-management". Configurer un espace de travail pnpm pour trois packages
Résultat attendu:
pnpm-workspace.yaml configuré avec les répertoires apps et packages. .npmrc créé avec shamefully-hoist et auto-install-peers activés. Dépendances partagées installées à la racine de l'espace de travail avec des overrides spécifiques par package si nécessaire.
Utilisation de "monorepo-management". Optimiser le cache Turborepo
Résultat attendu:
Pipeline turbo.json configuré avec des chaînes dependsOn appropriées, des outputs pour le cache et des inputs pour l'invalidation du cache. Cache distant activé avec Vercel. Temps de build réduits de 12 minutes à 3 minutes pour les packages inchangés.
Audit de sécurité
SûrThis skill contains documentation-only markdown files with instructional code examples. Static analysis flagged 60 patterns (external commands, network URLs, filesystem references, environment variables) but all are false positives - they appear in markdown code blocks as examples, not executable code. No security threats detected after manual review.
Score de qualité
Ce que vous pouvez construire
Startup développant une plateforme multi-applications
Une startup doit partager des composants UI et des utilitaires entre son application web, son application mobile et son site de documentation tout en maintenant des outils cohérents.
Entreprise consolidant des microservices
Une entreprise souhaite consolider des microservices connexes dans un monorepo pour faciliter la refactorisation inter-services et les définitions de types partagés.
Mainteneur de bibliothèque open source
Un mainteneur souhaite diviser une grande bibliothèque en plusieurs packages ciblés tout en les conservant dans un seul référentiel pour une coordination plus facile.
Essayez ces prompts
Aide-moi à créer un nouveau monorepo en utilisant Turborepo et pnpm. J'ai besoin de deux applications (web et docs) et d'un package UI partagé. Fournis la structure initiale des dossiers et les fichiers de configuration clés.
J'ai trois référentiels séparés : une application Next.js, une bibliothèque de composants React et un package d'utilitaires partagés. Guide-moi pour les migrer vers un seul espace de travail pnpm avec Turborepo.
Mes builds de monorepo prennent 15 minutes. Analyse ma configuration turbo.json et suggère des améliorations pour le cache, la parallélisation et la configuration du cache distant pour réduire les temps de build.
Crée un workflow GitHub Actions pour mon monorepo Turborepo qui exécute lint, test et build sur les pull requests, et déploie uniquement les applications affectées lors de la fusion vers main.
Bonnes pratiques
- Verrouiller les versions de dépendances au niveau racine et utiliser le protocole workspace pour les packages internes
- Configurer les inputs et outputs Turborepo avec précision pour maximiser les succès de cache tout en garantissant la correction
- Utiliser changesets pour le versionnement et la publication coordonnés de plusieurs packages
Éviter
- Importer des packages sans les déclarer dans les dépendances package.json
- Créer des dépendances circulaires entre les packages du monorepo
- Configurer les outputs de cache trop largement, provoquant des builds obsolètes à partir de fichiers non mis en cache