モノレポ(monorepo)ってどうゆうこと?

 コメント1件
GitHub: Let’s build from here
GitHub is where over 100 million developers shape the future of software, together. Contribute to th...
  • 1:以下、名無しがお送りします

    モノレポってどうゆうこと?

  • 10:以下、名無しがお送りします

    複数のプロジェクトを1つのリポジトリで管理する方式だよ

  • 16:以下、名無しがお送りします

    >>10 なんかメリットあるの?

  • 25:以下、名無しがお送りします

    >>16 コードの再利用がしやすい 関連するプロジェクト間で共通のコードを使える

  • 28:以下、名無しがお送りします

    >>16 依存関係の管理が楽 プロジェクト間の依存関係がわかりやすい

  • 35:以下、名無しがお送りします

    デメリットは?

  • 41:以下、名無しがお送りします

    >>35 リポジトリのサイズが大きくなりがち

  • 42:以下、名無しがお送りします

    >>35 関係ないプロジェクトの変更もpullしないといけない

  • 47:以下、名無しがお送りします

    向いてるプロジェクトってある?

  • 56:以下、名無しがお送りします

    >>47 関連性の高いプロジェクトを複数持ってる場合かな

  • 65:以下、名無しがお送りします

    >>47 フロントエンドとバックエンドを一緒に管理したりするのに良さそう

  • 72:以下、名無しがお送りします

    具体的にはどんな風に管理するの?

  • 76:以下、名無しがお送りします

    >>72 ディレクトリ構造で分けるのが一般的

  • 81:以下、名無しがお送りします

    >>76 例えば /packages 配下に各プロジェクトのディレクトリを作る感じ

  • 90:以下、名無しがお送りします

    >>72 lerna とか yarn workspace 使うと便利

  • 96:以下、名無しがお送りします

    >>90 それぞれのプロジェクトの依存関係を一括管理できる

  • 104:以下、名無しがお送りします

    バージョン管理はどうするの?

  • 110:以下、名無しがお送りします

    >>104 基本的には 全プロジェクト同じバージョンで管理する

  • 118:以下、名無しがお送りします

    >>110 一部だけバージョン上げるのは大変だからね

  • 123:以下、名無しがお送りします

    >>104 独立したバージョン管理がしたい時は lernaのindependent mode使うのがおすすめ

  • 133:以下、名無しがお送りします

    CI/CD との連携は?

  • 143:以下、名無しがお送りします

    >>133 変更があったプロジェクトだけテスト・デプロイすれば良いから 工夫次第でかなり効率化できそう

  • 148:以下、名無しがお送りします

    >>133 一括でテスト回すのは時間かかるから 要検討だね

  • 152:以下、名無しがお送りします

    モノレポ導入するべきかどうかの判断基準はある?

  • 156:以下、名無しがお送りします

    >>152 プロジェクト間の関連性の高さが重要だと思う

  • 165:以下、名無しがお送りします

    >>152 全然関係ないプロジェクトを無理に1つのリポジトリに入れても メリット薄いよね

  • 171:以下、名無しがお送りします

    >>152 あとは 開発チームの規模とか開発体制次第かな

  • 177:以下、名無しがお送りします

    >>171 小規模でやるなら シンプルに分けた方がいいかも

  • 185:以下、名無しがお送りします

    有名な採用プロジェクトってある?

  • 195:以下、名無しがお送りします

    >>185 GoogleとかFacebook とか 大規模なプロジェクトだとモノレポが主流って聞いたことある

  • 203:以下、名無しがお送りします

    >>185 BabelとかJestなんかもやってるよ

  • 210:以下、名無しがお送りします

    ディレクトリ構成のベストプラクティスはある?

  • 211:以下、名無しがお送りします

    >>210 /packages 配下に各プロジェクト /tools にビルドツールとか置くのが無難じゃないかな

  • 217:以下、名無しがお送りします

    >>210 大規模になると レイヤー単位(frontend, backend, infra など)で分けるのもありだと思う

  • 222:以下、名無しがお送りします

    事前に考えておくべきことは?

  • 227:以下、名無しがお送りします

    >>222 ディレクトリ構成は慎重に決めた方がいい 後で変更するの大変だから

  • 231:以下、名無しがお送りします

    >>222 プロジェクトのリリースフローをどうするか 独立リリースできるようにしておくと良さそう

  • 232:以下、名無しがお送りします

    参考になる記事とかある?

  • 238:以下、名無しがお送りします

    >>232 Lerna公式のサイトに 色々ノウハウまとまってるよ https://lerna.js.org

  • 248:以下、名無しがお送りします

    >>232 英語だけど monorepo について体系的にまとまってる記事 https://monorepo.tools

コメント(1件)

  • 1

    全プロジェクト同じバージョンって潔いね