Przejdź do głównej zawartości

Przepływy pracy monorepo z AI

Zmieniłeś nazwę współdzielonego typu w pakiecie core swojego monorepo. Siedem pakietów downstream ma teraz zepsute buildy, dwa z nich mają testy integracyjne, które przechodzą lokalnie, ale padają w CI, bo zależą od pakietu, który nie został jeszcze przebudowany. Narzędzie AI, którego użyłeś, patrzyło tylko na plik, który edytowałeś — nie miało pojęcia o efekcie kaskadowym w całym workspace.

  • Strategie promptowania świadome monorepo uwzględniające zależności cross-pakietowe
  • Przepływy pracy dla skoordynowanych zmian wielopakietowych z pomocą AI
  • Techniki analizy grafów zależności i oceny wpływu sterowane AI
  • Zautomatyzowane wzorce koordynacji wydań z wykorzystaniem narzędzi AI
  • Strategie dla współdzielonej konfiguracji i egzekwowania konwencji

Monorepo wzmacniają problem kontekstu. Zmiana we współdzielonej utilce może dotknąć 15 pakietów. AI musi rozumieć nie tylko plik, który edytujesz, ale cały łańcuch zależności.

Ustrukturyzuj swój .cursor/rules, aby zakodować graf monorepo:

# .cursor/rules (root)
This is a Turborepo monorepo managed with pnpm workspaces.
Package structure:
- /packages/core - Shared types, utilities, base classes (NO external deps)
- /packages/ui - React component library (depends on: core)
- /packages/api-client - API SDK (depends on: core)
- /apps/web - Next.js frontend (depends on: core, ui, api-client)
- /apps/api - Express backend (depends on: core)
- /apps/admin - Admin dashboard (depends on: core, ui, api-client)
Build order: core → ui, api-client → web, api, admin
CRITICAL RULES:
- Changes to /packages/core affect ALL other packages. Always check downstream.
- Never import from /apps/* into /packages/*
- Shared types go in /packages/core/src/types/
- Each package has its own tsconfig.json that extends /tsconfig.base.json

Pracując nad zmianami cross-pakietowymi, jawnie odwołuj się do łańcucha zależności: @packages/core/src/types @packages/ui/src/components @apps/web/src/pages

Modyfikując współdzielony kod, pracuj od dołu drzewa zależności w górę.

  1. Analizuj wpływ

    Zanim dotkniesz jakiegokolwiek kodu, zrozum co się zepsuje.

  2. Modyfikuj pakiet źródłowy

    Zmień współdzielony typ, utilkę lub komponent w pakiecie bazowym.

  3. Zbuduj pakiet źródłowy

    Zweryfikuj, że pakiet źródłowy kompiluje się poprawnie w izolacji.

  4. Aktualizuj bezpośrednich dependentów

    Przesuń się o jeden poziom w górę drzewa zależności. Zaktualizuj każdego bezpośredniego dependenta.

  5. Zbuduj i przetestuj każdego dependenta

    Zweryfikuj, że każdy dependent kompiluje się i jego testy przechodzą przed przejściem dalej w górę.

  6. Kontynuuj w górę drzewa

    Powtarzaj, aż dotrzesz do aplikacji liściowych.

  7. Uruchom pełny pipeline

    Wykonaj kompletny build i pełny zestaw testów, aby wyłapać wszelkie problemy.

Narzędzia AI mogą pomagać utrzymywać spójność w pakietach monorepo.

Zrozumienie twojego grafu zależności jest kluczowe dla bezpiecznych zmian. Narzędzia AI mogą generować i analizować te grafy.

Analyze the import statements across our entire monorepo and build a dependency graph.
Flag any:
- Circular dependencies between packages
- Apps importing from other apps (forbidden)
- Packages importing from apps (forbidden)
- Unused packages (no dependents)
- Packages with suspiciously deep dependency chains (> 3 levels)
Visualize the graph as a text-based tree structure.

Gdy zmiana obejmuje wiele pakietów, podbijanie wersji musi podążać za kolejnością zależności.

“AI zmodyfikowało współdzielony pakiet bez aktualizacji dependentów.” Twój plik reguł nie koduje grafu zależności. Dodaj jawne łańcuchy zależności i wymagania kolejności budowania do swojego .cursor/rules lub CLAUDE.md.

“Build przechodzi lokalnie, ale pada w CI dla pakietów downstream.” Prawdopodobnie testowałeś z nieaktualnymi buildami zależności. Zawsze uruchamiaj turbo build --filter=...affected (lub odpowiednik), aby przebudować cały dotknięty łańcuch.

“AI stworzyło cykliczne zależności między pakietami.” Dodaj jawne reguły warstw do swojej konfiguracji AI: “packages/core MUST NOT import from packages/ui or any app.” Narzędzia AI dobrze przestrzegają ograniczeń, gdy są jasno sformułowane.

“Podbijanie wersji jest niespójne w pakietach.” Użyj changesets lub podobnego narzędzia do zarządzania wersjami. Naucz AI swojego procesu wersjonowania przez pliki reguł, zamiast polegać na ad-hoc promptowaniu.