すべてのコマンドは、現在のディレクトリから上位にたどって最も近い.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では、--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/mobileCI/CDをご覧ください。
サブディレクトリから実行する
ローカルでコマンドを実行するたびに、手動でcdしてパッケージルートへ移動する必要はありません。パッケージ内のどこからでもlingo pushを実行すれば、そのパッケージの設定まで上位にたどり、lockfileはその隣に書き戻されます。
