I've never understood this complaint. JS is used everywhere from browsers to servers to native apps to IoT. Does there really need to be One True Framework/Linter/Build tool/etc?Is it really that big a problem that people have made a lot of different tools and libraries because they're solving a lot of different problems?
I think the problem is keeping up. It's simple if you can pay attention, but if you're still on angular 1.x because you have other things to worry about, the fragmentation and pace means you can get years behind if you're not careful.
It's not like ruby has another package manager every 6 months.
I agree the many implementations probably are a feature, not a bug, but still induce fatigue. It's too easy to get behind.
Maybe I'm missing something really fundamental, but why try to keep up with everything? It's a huge ecosystem and any given dev/team can only use a tiny bit of it. If a library does everything you need it to, does it matter if you're years behind on it? (modulo e.g. security fixes)
I mean, certainly I agree that trying to keep current on everything would be a nightmare. But surely that's just the result of lots of people sharing lots of libraries, right? If other languages don't have the same problem, isn't that just because people aren't sharing as much code?
I think this is true, but JS also "sucks" in different ways, so not keeping up means expending seemingly unnecessary effort in maintainability, reliability, etc.
Angular 1 is impossible to maintain compared to Angular 2, for instance. Angular 1 fixed a lot of problems vanilla js faced. It's all improvements.
I only very loosely followed Node/npm for the first few years, as I was mostly working on windows. 0.8 kind of worked, and 0.10 was the first version that really worked, and npm was finally baked enough. That said, the few binary modules you came across rarely worked in windows, and there were some rough cuts along the way.
I know what the pain/churn was like then... I mean it's overwhelming, build chains, task runners, configuration files, tools changing left and right, exponential (for a while) growth... Not to mention more functional approaches clashing paradigms, the detour of bower, less vs sass vs whatever... It was a huge shift. But the backdrop has settled a lot... Yes, there are new options out every other day, but it's not like it was for a long while.
Node 0.12 through current is mainly about bringing in new JS engines and performance improvements and less about introducing sweeping changes. Webpack and Babel are now staples... ES6 modules will shake up the npm ecosystem a bit for the next while, but if you're using Webpack + Babel, you'll probably notice it less.
There's still growth, but the churn isn't quite as massive if you just concentrate on the core (JS, npm, webpack, babel) and less about specific modules (lego blocks) until you need a given brick.