Monorepos

Max PrilutskiyCEO y cofundadorUpdated hace 3 meses · 1 min read

Cada comando sube desde el directorio actual hasta el .lingo/config.json más cercano. Con esa única regla basta para que la CLI funcione en un monorepo: tú decides dónde van los archivos de configuración.

Opción 1: una sola configuración en la raíz#

Si tus paquetes comparten un idioma de origen y los mismos idiomas de destino, coloca un .lingo/config.json en la raíz del repositorio y deja que sus patrones de files abarquen todos los paquetes:

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

Un solo lingo push en la raíz lo cubre todo. El archivo de bloqueo también se guarda en la raíz.

Opción 2: una configuración por paquete#

Si los paquetes necesitan idiomas o motores diferentes, dale a cada uno su propio .lingo/config.json:

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

Ejecuta los comandos desde dentro de un paquete (o haz cd hasta él) y la CLI encontrará la configuración de ese paquete:

bash
cd apps/mobile && lingo push

Cada paquete tiene su propio archivo de bloqueo y se vincula de forma independiente a su propio motor.

CI por paquete#

En CI, haz que el job de cada paquete apunte a su directorio con --working-directory:

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

Consulta CI/CD.

Ejecución desde un subdirectorio

No hace falta que hagas cd manualmente hasta la raíz del paquete para ejecutar comandos en local: si lanzas lingo push desde cualquier punto dentro de un paquete, la CLI sube hasta la configuración de ese paquete y vuelve a escribir el archivo de bloqueo junto a ella.