😊
turbo.json + package.json のスクリプト定義手法 [WIP]
※ workspace root を root と表示します。
背景
package.json - nodeの定義ファイル。
turbojson - Turborepoの設定ファイル。
monorepo運用でTurborepoは便利だ、ということは肌で感じていたが、スクリプトの定義がめんどくさすぎて敬遠していた。
例えば、下記のような感じのイメージ。
db:setup というスクリプトを追加するケース
- root/package.json に下記を追加
"db:setup": "turbo db:setup"
- root/turbo.jsonに下記を追加
"db:setup": {}
- packages/db/package.json に下記を追加
"db:setup": "hoge fuga db script"
うわ手間3倍マシマシやんめんどくさ
大前提
- packages/*/package.json に定義はかならず必要なはず。スクリプトの実態が入るので。
どんなアプローチがある?
0. 全部に書く
前述の方式
定義
- root/package.json
- root/turbo.json
- packages/*/package.json
1. root/package.json に書かない
もう npm script ではなくて tubro で実行してもらう
turbo db:setup
定義
- turbo.json
- packages/*/package.json
デメリット
turbo.json の中を見に行く必要がある。
場合によってはREADME.mdに書く必要がある。
→ 本末転倒感
2. --scope の利用
メリット
db:** といったグループ分けがされていると、使いやすい
Discussion