dependabotで関連するアップデートをまとめたい
2026-02-23
9 days ago
開発環境
- GitHub
- npm(Node.jsプロジェクト)
- Dependabot version: 2
前提
Dependabotを有効にしていると、依存関係のアップデートごとにPull Request(PR)が作成されます。
例えば以下のようなケースです。
- react
- react-dom
- @types/react
- @types/react-dom
これらが個別にPRとして作成されると、次のような問題が発生します。
- バージョンの不整合によりビルドエラーが発生する
- 型定義だけ更新されてコンパイルエラーになる
- 依存パッケージ間のpeer dependencyエラーが出る
- PRの数が増え、レビューコストが上がる
特にReactやPrismaのように密接に関連するパッケージ群では、「まとめて更新しないと壊れる」ケースが多くあります。
この課題を解決するのが、Dependabot の groups 機能です。
本題
groups 機能とは
groups は、特定の条件に一致する依存関係を1つのPRにまとめる機能です。
これにより、
- 関連ライブラリを同時に更新できる
- ビルドの整合性を保てる
- PR数を削減できる
- レビュー単位を論理的なまとまりにできる
といったメリットがあります。
なぜまとめないとビルドが壊れるのか?
React系
- react と react-dom はバージョン整合性が重要
- @types/react も同時に更新しないと型エラーになることがある
個別PRで @types/react だけ上がると、CIで型エラーが発生するケースがあります。
Prisma系
- prisma
- @prisma/client
この2つは基本的に同一バージョンである必要があります。
どちらか片方だけ更新されると、
- generateエラー
- runtimeエラー
が発生することがあります。
設定例
以下は実際の設定例です。
version: 2
updates:
- package-ecosystem: 'npm'
directory: '/'
schedule:
interval: 'weekly'
timezone: 'Asia/Tokyo'
day: 'saturday'
time: '10:00'
cooldown:
default-days: 7
groups:
# React 関連の依存関係をまとめる
react:
applies-to: version-updates
patterns:
- "react"
- "react-dom"
- "@types/react"
- "@types/react-dom"
# Prisma 関連の依存関係をまとめる
prisma:
applies-to: version-updates
patterns:
- "prisma"
- "@prisma/*"設定のポイント
1. applies-to
- security-updates
- version-updates
用途に応じて分けることができます。
セキュリティアップデートを1PRにまとめることで、対応を迅速にできます。
2. patterns
ワイルドカードが利用できます。
例:
- "@prisma/*"
- "@conform-to/*"
スコープ単位でまとめられるため、メンテナンス性が高いです。
さいごに
Dependabotは便利ですが、そのまま使うとPRが大量に生成され、逆にメンテナンス負荷が上がることがあります。
groups を活用することで、
- 技術的に意味のある単位で更新できる
- ビルドエラーを防げる
- レビュー効率が向上する
- PRのノイズを減らせる
というメリットがあります。
依存関係が増えてきたプロジェクトほど、早めに導入することをおすすめします。
参照
- https://docs.github.com/ja/code-security/reference/supply-chain-security/dependabot-options-reference#groups--
- https://docs.github.com/ja/code-security/dependabot/dependabot-version-updates