![[GitHub] Dependabot Grouped version updates で Production と Development の依存関係を分けてグループ化する機能が追加されました](https://devio2023-media.developers.io/wp-content/uploads/2023/12/dependabot_1200_630-1.png)
[GitHub] Dependabot Grouped version updates で Production と Development の依存関係を分けてグループ化する機能が追加されました
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX 事業本部 Delivery 部の若槻です。
以前のアップデートで、Dependabot version updates によりオープンされる Pull Request をグループ化する機能(Grouped version updates)が公開ベータで利用可能となりました。
これにより、複数の依存関係を更新する Pull Request をグループ化して、レビューの負荷を軽減することができます。
そしてさらに直近のアップデートで、Grouped version updates で Production と Development の依存関係を分けてグループ化する機能が追加されました。
試してみた
dependabot.yml の設定
Grouped version updates のドキュメントは下記となります。
Use to specify a dependency type to be included in the group.
dependency-typecan bedevelopmentorproduction
dependency-typeオプションでdevelopmentとproductionのいずれかを指定することで、グループ化する依存関係を分けることができます。
version: 2
updates:
  - package-ecosystem: npm
    directory: /
    schedule:
      interval: daily
    groups:
      prod-dependency:
        dependency-type: production
      dev-dependency:
        dependency-type: development
動作確認
package.jsonで最新でない依存関係をdependenciesとdevDependenciesにそれぞれ指定します。
{
  "devDependencies": {
    "eslint": "8.46.0",
    "typescript": "4.1.6"
  },
  "dependencies": {
    "@aws-sdk/client-athena": "3.387.0",
    "constructs": "10.2.68"
  }
}
コミットを push すると、下記のようにdev-dependencyとprod-dependencyの 2 つのグループに分けられて Pull Request が作成されました。

それぞれの Pull Request の変更を確認すると、dependenciesとdevDependenciesでグルーピングされていることがわかります。
 

patterns および exclude-patterns と組み合わせて使用する
dependency-typeはさらにpatternsまたはexclude-patternsオプションと組み合わせて使用することができます。
dependabot.ymlを次のように変更します。
version: 2
updates:
  - package-ecosystem: npm
    directory: /
    schedule:
      interval: daily
    groups:
      prod-dependency:
        dependency-type: production
        patterns:
          - '@aws-sdk/*'
      dev-dependency:
        dependency-type: development
        exclude-patterns:
          - esbuild
package.jsonでdevDependenciesおよびdependenciesに最新でないバージョンで依存関係を追加します。それぞれpatternsおよびexclude-patternsにマッチするものを 1 つずつ追加しています。
{
  "devDependencies": {
    "esbuild": "0.19.0",
    "husky": "7.0.4"
  },
  "dependencies": {
    "@aws-sdk/client-s3": "3.387.0",
    "dayjs": "1.11.8"
  }
}
変更を push すると、patternsにマッチしexclude-patternsにマッチしない依存関係がグループ化されて Pull Request が作成されました。またそれ以外の依存関係のアップデートは個別に Pull Request が作成されています。

おわりに
Dependabot Grouped version updates で Production と Development の依存関係を分けてグループ化する機能が追加されたのでご紹介しました。
Production と Development で依存関係のアップデートのライフサイクルを分けたい場合に役に立ちそうですね。
以上











