メインコンテンツへスキップ

ワークスペース監視

注記

ワークスペース監視は、Lerna 6.4.0以降で利用可能です。

Lernaは、パッケージ内のファイルの変更を監視し、リポジトリのルートから自動的にコマンドを実行できます。これは、開発ワークフロー中にファイルを更新するときに、パッケージの再構築やテストの再実行が必要な場合に役立ちます。

これにより、各パッケージの監視を手動で設定する必要がなくなります。

すべてのパッケージを監視し、変更されたパッケージ名とファイルを出力する

$ lerna watch -- echo \$LERNA_PACKAGE_NAME \$LERNA_FILE_CHANGES

すべてのパッケージを監視し、パッケージ内のファイルが変更されたときにそのパッケージで「build」スクリプトを実行する

$ lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME

すべてのパッケージを監視し、変更によって影響を受けるすべてのものに対して「build」スクリプトを実行する

$ lerna watch -- lerna run build --since

単一のパッケージを監視し、パッケージ内のファイルが変更されたときにそのパッケージで「build」スクリプトを実行する

$ lerna watch --scope="my-package-1" -- lerna run build --scope=\$LERNA_PACKAGE_NAME

単一のパッケージとその依存関係を監視し、変更されたパッケージに対して「build」スクリプトを実行する

$ lerna watch --scope="my-package-1" --include-dependencies -- lerna run build --scope=\$LERNA_PACKAGE_NAME

すべてのパッケージを監視し、変更されたパッケージとそのパッケージに依存するすべてのパッケージに対して`build`スクリプトを実行する

$ lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME --include-dependents

より高度なフィルタリングについては、フィルタオプションのドキュメントを参照してください。使用可能なオプションの詳細については、lerna watchのドキュメントを参照してください。

監視環境変数

Lernaは、内部コマンドの実行時に$LERNA_PACKAGE_NAMEおよび$LERNA_FILE_CHANGES環境変数を設定します。これらは、実行されるコマンドをカスタマイズするために使用できます。

  • $LERNA_PACKAGE_NAMEは、変更されたパッケージ名に置き換えられます。
  • $LERNA_FILE_CHANGESは、変更されたファイルに置き換えられます。1サイクルで複数のファイル変更が検出された場合、$LERNA_FILE_CHANGESはそれらをすべてスペースで区切って一覧表示します。
注記

$LERNA_PACKAGE_NAMEおよび$LERNA_FILE_CHANGESを使用する場合は、バックスラッシュ(\)を使用して$をエスケープする必要があります。上記の例を参照してください。

パッケージマネージャーでの実行

上記の例では、ターミナルで直接lernaを使用する方法を示しています。ただし、パスに追加せずにパッケージマネージャー経由でlernaを使用することもできます。

pnpm

pnpm lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME

yarn

yarn lerna -- watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME

npx

npx -c 'lerna watch -- lerna run build --scope=\$LERNA_PACKAGE_NAME'
注記

npxを使用する場合は、-cを使用し、lerna watchコマンド全体をシングルクォート(')で囲む必要があります。これを行わないと、npxはコマンドをlernaに渡す前に監視環境変数を置き換えようとし、$LERNA_PACKAGE_NAME$LERNA_FILE_CHANGESの値が常に空になります。

注記

WindowsでLernaを使用する場合は、環境変数を'%'で囲む必要があります。例:

$ lerna watch -- lerna run build --scope=%LERNA_PACKAGE_NAME% --include-dependents