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よい