Monorepos
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:
{
"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:
apps/web/.lingo/config.json # de, fr
apps/mobile/.lingo/config.json # de, fr, ja, koFühre Befehle innerhalb eines Pakets aus (oder cd in das Paketverzeichnis) – die CLI findet die Konfiguration dieses Pakets:
cd apps/mobile && lingo pushJedes 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:
- run: npx @lingo.dev/cli@latest push --wait
working-directory: apps/web
- run: npx @lingo.dev/cli@latest push --wait
working-directory: apps/mobileMit --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.