Q. npm.rangeStrategyをpinにするとenigineもpinされてしまう

例えば、Renovate が次のような PR を投げてくることがある。マージする前に気づけばいいが、誤ってマージしてしまうと、node のバージョンが完全に一致していないとローカルや CI で install コマンドすらそのまま打てなくなってしまう。

{
"engines": {
"node": "16.20.1"
"node": "^16.x"
},
}

解決策#

  • preset を使う

https://docs.renovatebot.com/presets-default/#pinallexceptpeerdependencies

  • packageRules にルールを追加する
renovate.json
{
"npm": {
"rangeStrategy": "pin",
"packageRules": [
{
"description": "Ignore nodejs",
"matchPackageNames": ["node"],
"matchDepTypes": ["engines"],
"rangeStrategy": "auto"
}
]
}
}