node-gradle / gradle-node-plugin

Gradle plugin for integrating NodeJS in your build. :rocket:
Apache License 2.0
599 stars 117 forks source link

bun install support #288

Open bgalek opened 11 months ago

bgalek commented 11 months ago

Hi! How about supporting bun? Bun install makes our application download dependencies 80% faster, it would be cool if we could just use it as package manager!

deepy commented 11 months ago

In it's current state adding another runtime is a little difficult, initially we wanted to give good entry points so that users could easily modify the functionality to support having a different runtime or package manager We never quite got there and had to dismantle some that to properly support the configuration-cache, but if it accepts the same CLI arguments as node and npm adding would be trivial

The only problem is the download mechanism, the way it currently works is that Node is downloaded during the configuration phase which isn't ideal, and adding more work for the configuration phase is not an option On the other hand, as bun can be installed through npm we can use it through the same mechanism as the others i.e. when download = true you'd download Node, use bundled npm to install bun, and then bun could be used for the npmInstall task (or an equivalent named one) And I guess also for things like BunTask, BunxTask, etc

deepy commented 11 months ago

The downside of that is that initial setup would be a lot slower than if we could just skip downloading Node in the first place I'm currently swamped with commitments but I'll happily guide you through the process if you want to attempt adding the support

PnpmSetupTask and PnpmInstallTask is a good starting point, if you find that you want to make larger changes in the ExecRunner that's fine and appreciated, but please use a separate PR for that so we can get the initial implementation in place first

bgalek commented 11 months ago

Thank you for sharing your opinion! I'll try to hack it on Monday - if I get any results I'll comment! If not - maybe during hacktoberfest someone could contribute! Make sure to add the required hacktoberfest labels! :)

deepy commented 10 months ago

Initial support was added in #290, there's some additional work to be done listed in #291