Monorepos und Workspaces mit mehreren Paketen erfordern bei Blueprints besondere Sorgfalt, da in verschiedenen Unterverzeichnissen unterschiedliche Sprachen, Paketmanager oder Abhängigkeiten verwendet werden können. Devin unterstützt zwei Ansätze:Documentation Index
Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
Use this file to discover all available pages before exploring further.
Native Workspaces (empfohlen)
Erstellen Sie für jedes Unterverzeichnis einen separaten Blueprint. Jeder Workspace erhält eigene Abschnitte für initialize und Maintenance, wobei das Arbeitsverzeichnis automatisch auf das jeweilige Unterverzeichnis gesetzt wird.
Subshells
Führen Sie Befehle in Unterverzeichnissen innerhalb eines einzelnen Blueprints mit
(cd dir && command) aus. Einfacher für kleine Monorepos mit nur wenigen Paketen.Native Workspaces
Für die meisten Monorepos empfohlen. Native Workspaces geben jedem Unterverzeichnis einen eigenen Blueprint mit isoliertem Setup und Arbeitsverzeichnis. Das ist übersichtlicher und leichter zu warten als subshells, wenn die Anzahl der Packages wächst.
cd oder subshells sind nicht nötig.
Der Root-Blueprint
Einen Workspace erstellen
- Gehen Sie zu Settings > Environment > Blueprints
- Klicken Sie auf das Repository
- Klicken Sie auf Workspace hinzufügen
- Geben Sie den Pfad des Unterverzeichnisses ein (z. B.
packages/frontend) - Erstellen Sie das Blueprint für diesen Workspace
Beispiel
- Root
- packages/frontend
- packages/backend
knowledge-Einträge jedes Workspaces sind auf dieses Unterverzeichnis beschränkt. Wenn Devin in packages/frontend arbeitet, sieht es die Frontend-Befehle für Linting, Tests und Entwicklung — nicht die für das Backend.
Wann native Workspaces sinnvoll sind
- Unterverzeichnisse haben unterschiedliche Sprachen oder Paketmanager
- Jedes Paket benötigt eigene Knowledge-Einträge (Lint-, Test- und Build-Befehle)
- Sie möchten ein isoliertes Setup — ein fehlerhaftes Blueprint für einen Workspace blockiert die anderen nicht
- Die Anzahl der Pakete wächst, und ein einzelnes Blueprint wird zunehmend unübersichtlich
Subshells
(cd ... && ...) erzeugen eine Subshell. Wenn die Subshell beendet wird, wird das Arbeitsverzeichnis für den nächsten Schritt wieder auf das Stammverzeichnis des Repos gesetzt.
Warum Subshells wichtig sind
- Korrekt (Subshells)
- Falsch (keine Subshells)
packages/.Wann Sie Subshells verwenden sollten
- Das Monorepo hat wenige Pakete mit einfachem Setup
- Alle Pakete nutzen dieselbe Sprache und denselben Paketmanager
- Sie benötigen keine Knowledge-Einträge pro Paket
Knowledge-Einträge für Monorepos
Beispiele
Turborepo / Nx Workspace
Mehrere JDK-Versionen
Best Practices
Native Workspaces für komplexe Monorepos bevorzugen
Native Workspaces für komplexe Monorepos bevorzugen
Wenn jedes Unterverzeichnis eine eigene Sprache, einen eigenen Paketmanager oder einen eigenen Build-Prozess hat, bleibt mit nativen Workspaces jedes Blueprint fokussiert und unabhängig. Subshells solltest du einfachen Fällen mit wenigen Paketen vorbehalten.
Für Verzeichniswechsel immer Subshells verwenden
Für Verzeichniswechsel immer Subshells verwenden
Wenn du den Subshell-Ansatz verwendest, setze
cd-Befehle in Klammern: (cd dir && command). So verhinderst du, dass sich der Verzeichniswechsel eines Schritts auf den nächsten auswirkt.Gemeinsam genutzte Tools im Organisations-Blueprint ablegen
Gemeinsam genutzte Tools im Organisations-Blueprint ablegen
Sprachlaufzeitumgebungen und Paketmanager, die in mehreren Repo verwendet werden, gehören in das organisationsweite Blueprint. So vermeidest du Duplikate und hältst Repo-Blueprints auf das projektspezifische Setup fokussiert.
Maintenance-Schritte nach Abhängigkeiten anordnen
Maintenance-Schritte nach Abhängigkeiten anordnen
Wenn Paket A davon abhängt, dass Paket B zuerst gebaut wird, führe den Build-Schritt von B in
maintenance vor dem Installationsschritt von A auf. Blueprint-Schritte werden in der angegebenen Reihenfolge nacheinander ausgeführt.Einen Eintrag für die Struktur hinzufügen
Einen Eintrag für die Struktur hinzufügen
Ein Eintrag mit dem Namen
structure, der Verzeichnisse ihren Sprachen und Tools zuordnet, hilft Devin, sich in der Codebase zurechtzufinden. Gib an, welchen Paketmanager jedes Unterverzeichnis verwendet und welche paketübergreifenden Abhängigkeiten es gibt.Einträge pro Paket verwenden
Einträge pro Paket verwenden
Erstelle statt eines großen Eintrags separate Einträge für jedes Paket (z. B.
frontend, backend, ml-pipeline). Bei nativen Workspaces hat jeder Workspace bereits einen integrierten eigenen Bereich.Maintenance inkrementell halten
Maintenance inkrementell halten
Verwende
pnpm install (nicht pnpm install --force) und uv sync (nicht rm -rf .venv && uv sync). Inkrementelle Befehle sind bei regelmäßigen Rebuilds schneller.- Deklarative Umgebungskonfiguration
- Blueprint-Referenz
- Vorlagenbibliothek — enthält einsatzbereite Monorepo-Vorlagen
