Monorepos

Max PrilutskiyCEO e cofundadorUpdated há 3 meses · 1 min read

Cada comando percorre o caminho do diretório atual até encontrar o .lingo/config.json mais próximo. Essa única regra basta para fazer o CLI funcionar em um monorepo — você só precisa decidir onde os arquivos de configuração vão ficar.

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

Se seus pacotes compartilham 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 alcancem 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 arquivo de bloqueio também fica na raiz.

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

Quando os pacotes precisam de idiomas ou engines diferentes, dê a cada um 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 de dentro de um pacote (ou use cd) — o CLI encontra a configuração desse pacote:

bash
cd apps/mobile && lingo push

Cada pacote tem seu próprio arquivo de bloqueio e se vincula ao próprio engine de forma independente.

CI por pacote#

No CI, aponte o job de cada pacote para seu 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.

Executando a partir de um subdiretório

Você não precisa usar cd para voltar manualmente até a raiz do pacote ao rodar comandos locais — executar lingo push de qualquer lugar dentro de um pacote faz o CLI subir até a configuração desse pacote e gravar o arquivo de bloqueio ao lado dela.