モノレポ

更新日:4 日前 · 読了目安 1分

すべてのコマンドは、現在のディレクトリから上位にたどって最も近い.lingo/config.jsonを探します。モノレポでCLIを動かすうえで必要なのは、このルールだけです。あとは設定ファイルをどこに置くかを決めるだけです。

オプション1: ルートに設定を1つ置く#

パッケージ間でソースロケールとターゲットロケールを共有している場合は、リポジトリのルートに.lingo/config.jsonを1つ置き、そのfilesパターンで各パッケージを対象にします。

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

ルートにある1つのlingo pushで全体をカバーできます。lockfileもルートに配置されます。

オプション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

各パッケージはそれぞれ独自のlockfileを持ち、各自のエンジンに個別にリンクされます。

パッケージごとのCI#

CI では、lingo push がそのパッケージの設定を見つけられるよう、各ステップの working-directory をそのパッケージに設定します。

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を実行すれば、そのパッケージの設定まで上位にたどり、lockfileはその隣に書き戻されます。