Monorepos

Max PrilutskiyCEO e cofundadorAtualizado em: há 3 meses · 1 min de leitura

Cada comando percorre os diretórios para cima a partir do diretório atual até encontrar o .lingo/config.json mais próximo. Esta única regra basta para pôr o CLI a funcionar num monorepo — só tem de decidir onde ficam os ficheiros de configuração.

Opção 1: uma configuração na raiz#

Se os seus pacotes partilharem um idioma de origem e idiomas de destino, coloque um .lingo/config.json na raiz do repositório e deixe que os padrões de files abranjam cada pacote:

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

Um único lingo push na raiz cobre tudo. O ficheiro de bloqueio também fica na raiz.

Opção 2: uma configuração por pacote#

Quando os pacotes precisarem de idiomas ou motores diferentes, dê a cada um o seu próprio .lingo/config.json:

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

Execute os comandos dentro de um pacote (ou cd para lá) — o CLI encontra a configuração desse pacote:

bash
cd apps/mobile && lingo push

Cada pacote tem o seu próprio ficheiro de bloqueio e liga-se ao seu próprio motor de forma independente.

CI por pacote#

No CI, aponte o job de cada pacote para o respetivo diretório com --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

Consulte CI/CD.

Executar a partir de um subdiretório

Não precisa de cd manualmente até à raiz do pacote para executar comandos locais — ao executar lingo push a partir de qualquer ponto dentro de um pacote, o CLI sobe até à configuração desse pacote e escreve o ficheiro de bloqueio ao lado dela.