Turborepoとは?
Turborepo(ターボレポ)は、
簡単に言うと 「たくさんのプロジェクトをまとめて管理・高速ビルドできるツール」 です。
JavaScriptおよびTypeScriptコードベース向けの高性能ビルドシステムこと。
たとえば、
- フロントエンド(Next.js)
- バックエンド(NestJS)
- 共通ライブラリ(UIコンポーネント集)
- 管理ツール(管理画面)
これ、バラバラで管理してたらめちゃくちゃ大変!
Turborepoを使えば、これらを「1つのリポジトリ」にきれいにまとめて、
しかも「速く開発」「速くビルド」できるようになります!
🏗️ モノレポとマルチレポの違い(Turborepoと関係あり)
項目 | モノレポ | マルチレポ |
---|---|---|
管理方法 | 1つのリポジトリに全部まとめる | プロジェクトごとに別リポジトリ |
例 |
apps/web , apps/api , packages/ui などをまとめて管理 |
webリポジトリ , apiリポジトリ , uiライブラリリポジトリ みたいにバラバラ |
メリット | 依存関係管理が楽 / バージョン同期しやすい | 各プロジェクト独立、影響範囲が小さい |
デメリット | リポジトリが大きくなる / 複雑になりやすい | プロジェクトを横断する作業が面倒 |
Turborepoはモノレポを最高に快適にするためのツールです。
🚀 Turborepoを使うと?
-
ビルドがめちゃくちゃ速くなる
→ 「キャッシュ」と「並列処理」を自動でやってくれるから! -
プロジェクト間の依存関係を自動で管理できる
→ どのプロジェクトがどれに依存してるか、Turborepoが理解してくれる。 -
無駄なビルドが減る
→ 変更がないものはスキップしてくれる。 -
CI/CD(GitHub Actionsとか)も速くなる
→ キャッシュがクラウドにも保存できる(VercelのRemote Caching機能)。
🛠️ 実際にTurborepoを使うとどうなる?(実例)
たとえばこんなディレクトリ構成になります。
my-monorepo/
├── apps/
│ ├── web/ ← Next.js(フロント)
│ └── api/ ← NestJS(バックエンド)
├── packages/
│ └── ui/ ← 共通UIコンポーネント
├── turbo.json ← Turborepoの設定ファイル
├── package.json ← 全体管理
└── pnpm-workspace.yaml ← 複数プロジェクト管理用
ここで、
-
web
はui
パッケージを使っている -
api
もui
を使っている
といった依存関係を自動で把握して、
「uiだけ変えたら、webとapiだけビルドする」 みたいなことができます。
つまり、
✅ 何も変わってないプロジェクトをいちいちビルドしない!
✅ 依存しているプロジェクトだけビルドする!
これが爆速開発につながります。
Turborepoをサクッと試す流れ
-
Turborepoをインストール
npm install -g turbo
-
プロジェクト作成
npx create-turbo@latest
-
ガイドに沿って、
apps
とpackages
を作るだけ! -
開発・ビルドコマンドは
turbo run build
とか
必要に応じてカスタムもできます。
バックとフロントが別れてる場合でもTurborepoは使える?
➡️ めちゃくちゃ使えます。むしろおすすめ。
- フロントエンド(Next.js)
- バックエンド(NestJSやExpress)
- 共通コード(API型定義や共通ライブラリ)
これをTurborepoで一元管理すれば、
- バックエンドの型をフロントでそのまま使ったり
- API更新に応じて自動で依存先もビルドできたり
めちゃくちゃ開発体験がよくなります。
📝 まとめ
内容 | |
---|---|
Turborepoとは | モノレポ開発をめちゃ快適にする高速ビルドツール |
使うとどうなる? | ビルドが速くなる、依存関係が管理できる、開発効率アップ |
モノレポ?マルチレポ? | Turborepoはモノレポ向け、マルチレポでは不要 |
バック・フロント分かれてても? | むしろ一緒にTurborepoで管理すると最高 |