There will always be incompatibilities between versions. Ideally the tool would manage its own version, maybe with vendoring. Yarn does this optionally and it works well
At least with this you wouldn’t need to manage versions of the package manager and runtime separately