<rant>
Coming from the world of Java/Maven, i have to say, not a fan of node.js dependency management.
For starters, would it kill anyone to have a namespace heirarchy like the java package system?
looking at node_modules folder like 200 folders in here, no subfolder system where you could say:
node_modules
- networking…
- io…
- ui_components..
just you know, categorize stuff a bit at the file-system level…
Maven can be horribly abused as well, but the simple “mvn clean install” command to just blow out the working directory and pull down fresh libraries just seems more reliable to me.
I know it is a maturity thing, Java and Maven have had many more years to resolve these issues — but the premature fragmentation of the JavaScript community really exacerbates the already less rigorous dependency handling limitations of the loosely typed, interpreted scripting language.
For example in Java if you pull down an incompatible version of a library that lacks a new method you are using, or returns a different datatype — your code will not compile within seconds.
In JavaScript, really there is no way to know these incompatibilities have crept in until they are called at runtime — perhaps in a corner of your app that does not have test coverage, and thus ends up in a production build.
Anyway, my 2 cents as I hack my way through the jungle of node_module conflicts to get a complex react native app built. I’m seriously missing my comfort blankie of Java & Maven.
</rant>