The one with Windows support
This adds Windows support for both npm and yarn.
It also unifies the strategy for both npm and yarn by piping the execution through a Node.js script using child_process. This was decided on because it is a requirement for both Windows and yarn users, and having everybody using the same strategy will reduce overall complexity (and hopefully bugs).
Also, notably, the minimum required version of Node.js is now 18.0 (<= 16 have reached end-of-life).