O hirunewani blog

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

Created at

Renovateでnpm.rangeStrategyをpinにするとengineもpinされてしまう問題について解決策をまとめた。

Table of Contents

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

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

解決策

  • :pinAllExceptPeerDependencies presetを使う

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

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