Lerna を2週間使ってみての感想 (Pros/Cons)

Lerna を使い始めて2週間たったので、簡単に Pros/Cons メモ。

ちなみに、Lerna の入門記事まとめは以下より

【Pros】

パッケージ整理が楽

パッケージの分割や、モジュールのより適した場所への移動などが手軽にできる。

各パッケージの移動もworkspaces内なら問題ないので、ディレクトリ構成の整理も簡単。

tsconfig.jsonなどでextendsとかしてる場合は、多少調整が必要。

より良いまとまりを維持できるので、アップデートもしやすい。

monorepo内パッケージの相互利用が自動更新

monorepo内の作成パッケージを相互に利用している場合、利用される側のパッケージのバージョンの更新に合わせて、利用側のバージョンの更新も自動でされる。

相互に最新パッケージに更新されるので、利用側でバグが出ても早期発見できる。

リアルタイム更新

開発環境だと、monorepo 内パッケージを利用する場合、インストールしたコードでなく、開発コードを読み込む模様。(TypeScript を使ってる場合はビルドコード)

なので、利用される側のコードを更新すると、リアルタイムで利用側にも変更が適用される。 (TypeScript の場合はtsc -wで監視&ビルドが必要)

storybook などでデモ表示する場合も、リアルタイムで更新される。

【Cons】

開いてるファイルが散らかる

IDE などで mororepo プロジェクト全体を開いてコーディングを進める場合、複数パッケージのファイルを開くと、どこのパッケージのファイルかわからなくなる。

対策としては、個別パッケージでプロジェクトを開くなど。

その場合lint設定などを個別パッケージに配置しないとエラーの嵐に。

monorepo でなければ、結局、個別パッケージに設置が必要なので、それほどデメリットではない気がする。

まとめ

Lerna を2週間使ってみた感想を、簡単に Pros/Cons スタイルでまとめてみました。

他にも、いい所、わるい所ありそうですが、今の所はこんな感じです。

最後に三行でまとめると

  • Lernaよい
  • 今の所、デメリットらしいデメリットはなし
  • Lernaよい