Monorepo

更新时间:上季度 · 预计阅读 1 分钟

每条命令都会从当前目录一路向上查找,直到最近的 .lingo/config.json。掌握这一条规则,就足以让 CLI 在 monorepo 中顺畅运行——你只需要决定把配置文件放在哪里。

方案 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 就会一路向上找到该包的配置,并将锁文件写回配置文件所在位置。