Monorepo

Max PrilutskiyCEO 兼联合创始人预计阅读 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 设为该软件包,这样 lingo push 就能找到该软件包的配置:

yaml
- run: npx @lingo.dev/cli@latest push --wait
  working-directory: apps/web
- run: npx @lingo.dev/cli@latest push --wait
  working-directory: apps/mobile

--wait 会让每个步骤一直运行到翻译写入完成,方便后续步骤提交这些翻译。请参阅 CI/CD。

从子目录运行

本地执行命令时,你不必手动 cd 到包根目录——只要在包内任意位置运行 lingo push,CLI 就会一路向上找到该包的配置,并将锁文件写回配置文件所在位置。