Monorepos

Zuletzt aktualisiert: vor 4 Tagen · 1 Min. Lesezeit

Jeder Befehl sucht vom aktuellen Verzeichnis aus nach oben bis zur nächstgelegenen .lingo/config.json. Diese eine Regel reicht aus, damit die CLI in einem Monorepo funktioniert – du musst nur festlegen, wo die Konfigurationsdateien liegen.

Option 1: eine Konfiguration im Root-Verzeichnis#

Wenn deine Pakete dieselbe Quellsprache und dieselben Zielsprachen verwenden, lege eine .lingo/config.json im Root des Repos ab und lass ihre files-Muster bis in jedes Paket greifen:

json
{
  "sourceLocale": "en",
  "targetLocales": ["de", "fr"],
  "files": [
    { "pattern": "apps/web/locales/en.json" },
    { "pattern": "packages/docs/content/en/**/*.md" }
  ]
}

Eine einzige lingo push im Root deckt alles ab. Die Lockfile liegt ebenfalls dort.

Option 2: eine Konfiguration pro Paket#

Wenn Pakete unterschiedliche Sprachen oder Engines benötigen, gib jedem seine eigene .lingo/config.json:

text
apps/web/.lingo/config.json      # de, fr
apps/mobile/.lingo/config.json   # de, fr, ja, ko

Führe Befehle innerhalb eines Pakets aus (oder cd in das Paketverzeichnis) – die CLI findet die Konfiguration dieses Pakets:

bash
cd apps/mobile && lingo push

Jedes Paket hat seine eigene Lockfile und ist unabhängig mit seiner eigenen Engine verknüpft.

CI pro Paket#

Lege in CI für jeden Schritt working-directory auf das jeweilige Paket fest, damit lingo push die Konfiguration dieses Pakets findet:

yaml
- run: npx @lingo.dev/cli@latest push --wait
  working-directory: apps/web
- run: npx @lingo.dev/cli@latest push --wait
  working-directory: apps/mobile

Mit --wait läuft jeder Schritt so lange weiter, bis die Übersetzungen geschrieben sind, damit ein späterer Schritt sie committen kann. Siehe CI/CD.

Ausführung aus einem Unterverzeichnis

Für lokale Befehle musst du nicht per Hand mit cd in das Paket-Root wechseln – wenn du lingo push irgendwo innerhalb eines Pakets ausführst, sucht die CLI nach oben bis zur Konfiguration dieses Pakets und schreibt die Lockfile wieder direkt daneben.