RenovateでVoltaを検知対象から除外したい場合
Renovateを用いてNode.jsプロジェクトの依存ライブラリー更新を行う場合、package.jsonに以下のようなVoltaの設定が含まれていると、更新対象として検知される。
"volta": {
"node": "20.11.1"
}
Node.jsのバージョンアップをRenovateの対象へ加えたい場合は特に問題ないけども、Node.jsに関してはRenovateの対象から除外して手動更新したいケースもある。
そのようなケースでvoltaの設定フィールドをどのように扱えるか、というメモ。
depTypes
package.jsonにおけるvoltaの設定フィールドはRenovateの検知対象になっているけど、このような検知対象のフィールドの定義について公式ドキュメントへ記載があり、
npmのマネージャーにおけるサポート対象のdepTypesを以下としている。
dependenciesdevDependenciesoptionalDependenciespeerDependenciesenginesvoltapackageManager
これによってvoltaの設定フィールドは、dependenciesなどと同じようにdepTypesとして扱えるものであることが分かる。
従って、packageRulesで以下のようにvoltaのdepTypesを無効とするように設定すると、検知対象から除外することができる。
"packageRules": [
{
"matchDepTypes": ["volta"],
"enabled": false
}
]
今回はNode.jsについてフォーカスしているけど、このように設定するとvoltaの設定フィールドに記載しているnpmやyarnなどの記載がある場合も同様に検知対象から除外となる。
なお、Renovateにおけるマネージャーとは、npmのようなパッケージマネージャーからCIの設定ファイルまで、依存関係を記載するさまざまなファイルを包括した概念となっている。
サポートされているマネージャーの一覧は以下リンクに記載されている。
Node.jsの検知対象ファイル
ここまでVoltaについて言及してきているけど、Node.jsのバージョンの検知は他にも以下のような類で行われるとNode.js Versions - Renovate Docsに記載がある。
意図せず検知されるケースがあればこのような箇所に記載がないか確認するのが良さそう。
-
package.jsonのengines .nvmrc.node-version.tool-versions.mise.toml-
.travis.ymlのnode_js
参考
Discussion