ワークスペース監視
ワークスペース監視は、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