🗂

RenovateでVoltaを検知対象から除外したい場合

2024/10/25に公開

Renovateを用いてNode.jsプロジェクトの依存ライブラリー更新を行う場合、package.jsonに以下のようなVoltaの設定が含まれていると、更新対象として検知される。

package.json
"volta": {
  "node": "20.11.1"
}

Node.jsのバージョンアップをRenovateの対象へ加えたい場合は特に問題ないけども、Node.jsに関してはRenovateの対象から除外して手動更新したいケースもある。
そのようなケースでvoltaの設定フィールドをどのように扱えるか、というメモ。

depTypes

package.jsonにおけるvoltaの設定フィールドはRenovateの検知対象になっているけど、このような検知対象のフィールドの定義について公式ドキュメントへ記載があり、

https://docs.renovatebot.com/modules/manager/npm/#additional-information

npmのマネージャーにおけるサポート対象のdepTypesを以下としている。

  • dependencies
  • devDependencies
  • optionalDependencies
  • peerDependencies
  • engines
  • volta
  • packageManager

これによってvoltaの設定フィールドは、dependenciesなどと同じようにdepTypesとして扱えるものであることが分かる。
従って、packageRulesで以下のようにvoltadepTypesを無効とするように設定すると、検知対象から除外することができる。

renovate.json
"packageRules": [
  {
    "matchDepTypes": ["volta"],
    "enabled": false
  }
]

今回はNode.jsについてフォーカスしているけど、このように設定するとvoltaの設定フィールドに記載しているnpmyarnなどの記載がある場合も同様に検知対象から除外となる。

なお、Renovateにおけるマネージャーとは、npmのようなパッケージマネージャーからCIの設定ファイルまで、依存関係を記載するさまざまなファイルを包括した概念となっている。
サポートされているマネージャーの一覧は以下リンクに記載されている。

https://docs.renovatebot.com/modules/manager/#supported-managers

Node.jsの検知対象ファイル

ここまでVoltaについて言及してきているけど、Node.jsのバージョンの検知は他にも以下のような類で行われるとNode.js Versions - Renovate Docsに記載がある。
意図せず検知されるケースがあればこのような箇所に記載がないか確認するのが良さそう。

  • package.jsonengines
  • .nvmrc
  • .node-version
  • .tool-versions
  • .mise.toml
  • .travis.ymlnode_js

参考

https://github.com/renovatebot/renovate/pull/4512

GitHubで編集を提案

Discussion