🐙
Dependabot が engine-strict を設定していると動かない件
何が起こるのか
package.json
"engines": {
"node": ">=20.0.0",
"npm": ">=9.6.4"
}
.npmrc
engine-strict=true
上の設定でDependabotをnpmに対して適用した場合、Dependabotのページ(Insights > Dependency graph > Dependabot)に次のエラーが表示されます。
Dependabot can't resolve your JavaScript dependency files
Dependabot failed to update your dependencies because there was an error resolving your JavaScript dependency files.
Dependabot encountered the following error:
Dependabot uses Node.js v16.20.0
and NPM 8.19.4
. Due to the engine-strict setting, the update will not succeed.
エラーメッセージに書いてあるとおり、engines を指定していても、Dependabotは無視して特定のバージョンで走るので engine-strict によってエラーを吐いて停止しています。
解決策
-
engine-strictをfalseにする -
enginesでDependabotが使っているバージョンを含める -
Dependabotの使用を諦める
このいずれかしかありません。
GitHub の対応について
上のIssueへのコメントに記載されていることを以下に要約しました。詳しく知りたい場合は原文をあたってみてください。
-
package.jsonを読んでnode,npmのバージョンを切り替えるとDependabotの実行が遅くなってしまう。 -
バージョンを切り替えられるようにすると、多くのバージョンをサポートしなければならなくなる。
-
engine-strictを無視するようにもできるが、engine-strictの意味がなくなる。
これらの理由からこの問題は少なくともすぐには修正されないようです。諦めましょう。
Discussion