😊

turbo.json + package.json のスクリプト定義手法 [WIP]

2023/11/20に公開

※ workspace root を root と表示します。

背景

package.json - nodeの定義ファイル。
turbojson - Turborepoの設定ファイル。

monorepo運用でTurborepoは便利だ、ということは肌で感じていたが、スクリプトの定義がめんどくさすぎて敬遠していた。
例えば、下記のような感じのイメージ。

db:setup というスクリプトを追加するケース

  1. root/package.json に下記を追加
"db:setup": "turbo db:setup"
  1. root/turbo.jsonに下記を追加
"db:setup": {}
  1. packages/db/package.json に下記を追加
"db:setup": "hoge fuga db script"

うわ手間3倍マシマシやんめんどくさ

大前提

  • packages/*/package.json に定義はかならず必要なはず。スクリプトの実態が入るので。

どんなアプローチがある?

0. 全部に書く

前述の方式

定義

  1. root/package.json
  2. root/turbo.json
  3. packages/*/package.json

1. root/package.json に書かない

もう npm script ではなくて tubro で実行してもらう

turbo db:setup

定義

  1. turbo.json
  2. packages/*/package.json

デメリット

turbo.json の中を見に行く必要がある。
場合によってはREADME.mdに書く必要がある。
→ 本末転倒感

2. --scope の利用

メリット

db:** といったグループ分けがされていると、使いやすい

3. root/package.json にのみ定義する。

Discussion