Les monorepos et les espaces de travail multi-packages nécessitent une attention particulière dans les blueprints, car différents sous-répertoires peuvent utiliser différents langages, gestionnaires de paquets ou ensembles de dépendances. Devin prend en charge deux approches :Documentation Index
Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
Use this file to discover all available pages before exploring further.
Espaces de travail natifs (recommandés)
Créez un blueprint distinct pour chaque sous-répertoire. Chaque espace de travail dispose de ses propres sections initialize, maintenance et Knowledge, le répertoire de travail étant automatiquement défini sur ce sous-répertoire.
Subshells
Exécutez des commandes dans des sous-répertoires au sein d’un seul blueprint à l’aide de
(cd dir && command). Solution plus simple pour les petits monorepos avec seulement quelques packages.Espaces de travail natifs
Recommandé pour la plupart des monorepos. Les espaces de travail natifs attribuent à chaque sous-répertoire son propre blueprint, avec une configuration initiale, un Knowledge et un répertoire de travail isolés. Cette approche est plus propre et plus facile à maintenir que les subshells à mesure que le nombre de packages augmente.
cd ou des subshells.
Le blueprint racine
Créer un espace de travail
- Accédez à Settings > Environment > Blueprints
- Cliquez sur le dépôt
- Cliquez sur Ajouter un espace de travail
- Saisissez le chemin du sous-répertoire (par ex.
packages/frontend) - Rédigez le blueprint pour cet espace de travail
Exemple
- Racine
- packages/frontend
- packages/backend
knowledge de chaque espace de travail sont propres à ce sous-répertoire. Quand Devin travaille dans packages/frontend, il voit les commandes lint/test/dev du frontend, et non celles du backend.
Quand utiliser des espaces de travail natifs
- Les sous-répertoires utilisent des langages ou des gestionnaires de paquets différents
- Chaque package a besoin de ses propres entrées Knowledge (commandes de lint, test, build)
- Vous voulez une configuration isolée — un blueprint défaillant pour un espace de travail ne bloque pas les autres
- Le nombre de packages augmente et un blueprint unique devient difficile à gérer
Subshells
(cd ... && ...) créent un subshell. Lorsque le subshell se termine, le répertoire de travail revient à la racine du dépôt pour l’étape suivante.
Pourquoi les subshells sont utiles
- Correct (subshells)
- Incorrect (sans subshells)
packages/.Quand utiliser des subshells
- Le monorepo comporte quelques packages avec une configuration simple
- Tous les packages utilisent le même langage et le même gestionnaire de paquet
- Vous n’avez pas besoin d’entrées Knowledge propres à chaque package
Entrées de Knowledge pour les monorepos
Exemples
Espace de travail Turborepo / Nx
Plusieurs versions du JDK
Bonnes pratiques
Privilégiez les espaces de travail natifs pour les monorepos complexes
Privilégiez les espaces de travail natifs pour les monorepos complexes
Lorsque chaque sous-répertoire a son propre langage, son propre gestionnaire de paquets ou son propre processus de build, les espaces de travail natifs permettent à chaque blueprint de rester ciblé et indépendant. Réservez les subshells aux cas simples comportant seulement quelques packages.
Utilisez toujours des subshells pour les changements de répertoire
Utilisez toujours des subshells pour les changements de répertoire
Lorsque vous utilisez l’approche par subshell, placez les commandes
cd entre parenthèses : (cd dir && command). Cela évite qu’un changement de répertoire dans une étape n’affecte l’étape suivante.Placez les outils partagés dans le blueprint d’organisation
Placez les outils partagés dans le blueprint d’organisation
Les environnements d’exécution et les gestionnaires de paquets utilisés dans plusieurs repos doivent se trouver dans le blueprint à l’échelle de l’organisation. Cela évite les doublons et permet aux blueprints de repo de rester centrés sur la configuration spécifique au projet.
Ordonnez les étapes de maintenance selon les dépendances
Ordonnez les étapes de maintenance selon les dépendances
Si le package A dépend du build préalable du package B, placez l’étape de build de B avant l’étape d’installation de A dans
maintenance. Les étapes d’un blueprint s’exécutent séquentiellement dans l’ordre indiqué.Ajoutez une entrée Knowledge de structure
Ajoutez une entrée Knowledge de structure
Une entrée Knowledge nommée
structure, qui associe les répertoires à leurs langages et à leurs outils, aide Devin à se repérer dans la base de code. Indiquez quel gestionnaire de paquets utilise chaque sous-répertoire ainsi que les dépendances entre packages.Utilisez des entrées Knowledge par package
Utilisez des entrées Knowledge par package
Au lieu d’une seule grande entrée Knowledge, créez des entrées distinctes pour chaque package (p. ex. :
frontend, backend, ml-pipeline). Avec les espaces de travail natifs, chaque espace de travail intègre déjà sa propre section Knowledge.Privilégiez une maintenance incrémentale
Privilégiez une maintenance incrémentale
Utilisez
pnpm install (et non pnpm install --force) et uv sync (et non rm -rf .venv && uv sync). Les commandes incrémentales sont plus rapides lors des rebuilds périodiques.- Configuration déclarative de l’environnement
- Référence Blueprint
- Bibliothèque de modèle — comprend des modèles monorepo prêts à l’emploi
