Монорепозитории

Max PrilutskiyГенеральный директор и соучредительUpdated 3 месяца назад · 1 min read

Каждая команда поднимается от текущей директории вверх до ближайшего .lingo/config.json. Этого правила достаточно, чтобы CLI работал в монорепозитории: вам нужно только решить, где будут лежать файлы конфигурации.

Вариант 1: одна конфигурация в корне#

Если все пакеты используют одну исходную локаль и одни и те же целевые локали, разместите один .lingo/config.json в корне репозитория, а его шаблоны files пусть охватывают все пакеты:

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

Один lingo push в корне покрывает весь репозиторий. Файл блокировки тоже находится в корне.

Вариант 2: отдельная конфигурация для каждого пакета#

Если пакетам нужны разные локали или движки, добавьте каждому свой .lingo/config.json:

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

Запускайте команды из директории пакета (или cd в неё) — CLI найдёт конфигурацию этого пакета:

bash
cd apps/mobile && lingo push

У каждого пакета свой файл блокировки, и каждый из них независимо привязывается к своему движку.

CI для каждого пакета#

В CI укажите в задаче каждого пакета его директорию через --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

Подробнее см. в разделе CI/CD.

Запуск из поддиректории

Для локальных команд не нужно вручную переходить cd в корень пакета: если запустить lingo push из любого места внутри пакета, CLI поднимется до конфигурации этого пакета и запишет файл блокировки рядом с ней.