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
を以下としている。
dependencies
devDependencies
optionalDependencies
peerDependencies
engines
volta
packageManager
これによって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