TL;DR タイトル
lernaはモノレポ管理下にあるpackage.jsonのコマンドを同時に実行することができる。
lerna run --scope s-* lint
とするとpackage.jsonのnameがs-
で始まるすべてのワークスペースでnpm run lint
が実行される。(s-はオレオレパッケージのプレフィックスです)
モノレポではワークスペースでlintの設定を統一したり、ビルドのコマンドを統一したりするのでlernaのコマンド実行は便利。
しかし問題もなくはない。
標準出力がしょぼい
一部コマンドではルートのpackage.jsonにlernaコマンドを書いて実行すると、Warningになっていても標準出力に出ずsuccess!とだけ表示される。鬱なのでなんとかしたい。
lernaからの実行では一見パーフェクトに見えるが
ワークスペースに潜ってyarn generate
するとバンドルサイズ周りでwebpackが警告出していたという罠
--stream
オプションをつけて子の標準出力をlernaに送る
run
コマンドはオプションで--stream
をつけると子プロセスの出力をストリーミングすることができる。各ワークスペースのコマンド実行ログがそのまま流れるため、lernaからの実行時でも重要な標準出力を見逃すことがない。
出力がごちゃ混ぜになってやばいみたいなこともない。
他にも並列実行のオプションや実行時のパフォーマンスを測定するオプションもある。需要に応じて使ってみると良いかもしれない。
元記事