JSのmonorepoリポジトリ作る
frontendとbackendをNode.jsで書いてるときとかはmonorepoでproject作ってあげると都合の良いことがありそう。
GraphQLのschema定義して、それを front と back で参照する場合など特にmonorepoにしておくと良い気がしている。
monorepo採用すると、PRなどがバンバン作られたりするのでPRの管理などには気を配ってやるのが良さげ。
今回monorepoを採用したrepositoryは以下の前提があった感じ
deployはfrontendとbackendでそれぞれ実施する
CIはfrontとbackendでそれぞれ回るようにしたい
frontendもbackendもNode.jsに依存してる
frontend: Node.js
backend: CDK(TypeScript)でAppSyncの定義やLambdaスクリプトを管理してる
今回は全部Node.jsに依存しているので yarn workspacesでやることにした。
lernaも組み合わせて使ったりするともう少し色々高度なこともできるようだけど、必要になったら使うで良い気がした
setup
subprojectのworkspaceを指定して実行する場合、yarn workspace <workspace_name> command とかでやればいいけど、workspace_name はsubprojectのpackage.jsonのnameを指定する必要がある (folder名とsubprojectのnameが違う場合は注意)。
yarn instal時、subprojectのprepareの内容が実行されなくてちょっと困った
直接subprojectのworkspace指定してinstall実行してやればprepareの内容が動いたけどこれなんとかできないかな?
結局frontとbackendで共通にできるからrootがわのpackage.jsonに寄せて解決したけどどいういうやり方があるんかな?
frontとbackendで共通する設定などはrootに寄せていけばよしなにそれぞれに適用される感じになるのでLinterの設定とかは寄せていくと良さげ