Каждая команда поднимается от текущей директории вверх до ближайшего .lingo/config.json. Этого правила достаточно, чтобы CLI работал в монорепозитории: вам нужно только решить, где будут лежать файлы конфигурации.
Вариант 1: одна конфигурация в корне#
Если все пакеты используют одну исходную локаль и одни и те же целевые локали, разместите один .lingo/config.json в корне репозитория, а его шаблоны files пусть охватывают все пакеты:
{
"sourceLocale": "en",
"targetLocales": ["de", "fr"],
"files": [
{ "pattern": "apps/web/locales/en.json" },
{ "pattern": "packages/docs/content/en/**/*.md" }
]
}Один lingo push в корне покрывает весь репозиторий. Файл блокировки тоже находится в корне.
Вариант 2: отдельная конфигурация для каждого пакета#
Если пакетам нужны разные локали или движки, добавьте каждому свой .lingo/config.json:
apps/web/.lingo/config.json # de, fr
apps/mobile/.lingo/config.json # de, fr, ja, koЗапускайте команды из директории пакета (или cd в неё) — CLI найдёт конфигурацию этого пакета:
cd apps/mobile && lingo pushУ каждого пакета свой файл блокировки, и каждый из них независимо привязывается к своему движку.
CI для каждого пакета#
В CI укажите в задаче каждого пакета его директорию через --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/mobileПодробнее см. в разделе CI/CD.
Запуск из поддиректории
Для локальных команд не нужно вручную переходить cd в корень пакета: если запустить lingo push из любого места внутри пакета, CLI поднимется до конфигурации этого пакета и запишет файл блокировки рядом с ней.
