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:
{
"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:
apps/web/.lingo/config.json # de, fr
apps/mobile/.lingo/config.json # de, fr, ja, koExecute os comandos de dentro de um pacote (ou use cd) — o CLI encontra a configuração desse pacote:
cd apps/mobile && lingo pushCada 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:
- 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/mobileConsulte 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.
