What am i missing? Why do you have to rely on all that junk to run a CLI? It feels like people choose Node because creating a Rube Goldberg machine creates job security.
This isn't meant to be a comparison of the number of dependencies or anything. Just pointing out a few nuances to how the Ruby dependencies were handled.
The dozens of ESLint dependencies are really what frustrate me... I wonder when someone will make a "batteries-included zero-config" JS linter with the most useful rules included, since that's what people seem to want in JS crazy land. See: Vite, Parcel, and the endless complaints about Webpack configs. Of course, people will inevitably want plugins and extensibility and you end right back up with Webpack again.
One reason is because ruby has a large standard library. Also people just pick what they know - there are more js devs than ruby devs. Also neither ruby nor node are a good choice for a cli, so it is kind of a moo point.
That's not Node's issue but NX's monorepo. Having a mega monster root package.json just makes your ci/cd incredibly slow, one way to solve it, is to have per app package.json
They think of it as a benefit: "Node’s module system allows having multiple versions of the same transitive package without conflicting with each other"
Look at this:
https://github.com/Shopify/cli/blob/main/package.json
but wait...this too:
https://github.com/Shopify/cli/blob/main/packages/app/packag...
https://github.com/Shopify/cli/blob/main/packages/cli-hydrog...
https://github.com/Shopify/cli/blob/main/packages/cli/packag...
https://github.com/Shopify/cli/blob/main/packages/create-app...
etc, etc, etc
VS
https://github.com/Shopify/shopify-cli/blob/main/Gemfile
What am i missing? Why do you have to rely on all that junk to run a CLI? It feels like people choose Node because creating a Rube Goldberg machine creates job security.