フロントエンド(React)とバックエンド(Rails)を分けたアプリケーションを作成するにあたって、GitHubでのリポジトリ構成に悩んだ点のの自分記録。
最終的には、自分のは個人開発だし、pushは一回にしたいと思ったので1つのリポジトリに2つのアプリケーションを入れることにした。(モノレポというらしい)
モノレポにした方法
①GitHubにリモートリポジトリを作成する
②ローカルでプロジェクトディレクトリを作成
③プロジェクトリポジトリ配下でrails new -apiとnpx create-react-upを実施
④プロジェクトリポジトリに.gitignoreを作成
⑤.gitignoreにrailsとreactのそれぞれの.gitignoreの内容をコピーして貼り付け
⑥プロジェクトリポジトリをgitの管理下にし、gitpushまで実行
サブモジュールという方法
フロントエンドとバックエンドをそれぞれGitHub上にリポジトリを作成し
そのコミット歴を管理するリポジトリ(プロジェクトリポジトリとする)を別で作成する
プロジェクトリポジトリはフロントエンドとバックエンドのリポジトリのコミット歴を
管理し、各リポジトリへのリンクが作成できる。
こちらの説明がわかりやすかった。
それぞれのメリット
モノレポ
- 1つのリポジトリでプロジェクト管理できて見やすい
- それぞれのコミット歴が一度に参照しやすい
- issueやプルリクの場所が1つ
サブモジュール
- 各サブモジュールの更新やテストが独立して行える
- サブモジュール内でのコミット歴がわかりやすい
- リポジトリサイズが軽量
大きなプロジェクトで複数人が携わる場合は、モノレポにするとリポジトリが肥大化する、複数人の変更が衝突しやすいなど向かないように感じた。
一方で個人の場合には、1つのリポジトリで関連するコミット履歴が確認できるので管理しやすい。
そのため、今回はモノレポで作成してみた。
まとめ
これまでRailsフルスタックのアプリのみ作成していたため、フロントとバックで分けた場合のGitHub管理はどうするのかという点で疑問を持った。
調べてモノレポにしたが、今のところ本番環境へのデプロイもでき、特に問題なく進められている。