@jforseth210 NPM and TypeScript is the best combination I've seen. NPM's approach is to bite the bullet and accept that every project's dependencies are specific to it, so the `package.json` describes what dependencies the project has, and they get installed alongside the project.
Uses a lot of space, but space is cheap these days.
@diazona @mtomczak @jforseth210 Often if dependency A and B depend on two different versions of dependency C a classic package manager would say that both A and B can’t be installed at once as only a single version of C can be installed at once.
I believe eg Ruby gems worked like that when npm came about and npm became a distinct improvement over that.
@mtomczak
NPM does not even support snapshot dependencies like Maven.
Furthermore, version ranges are terrible if you want your builds to be reproducible. For this, you need an extra lock file that has to be updated from time to time.
@jforseth210
@StephanWindmueller @jforseth210 Ah yeah, I left out the lockfile from my description. NPM has those also and they're very important for reproducibility.
Maven I've used very little. I've never had need for snapshot dependencies; almost all my work has been in dev houses where such a thing doesn't exist because if you want to test a potential release, you're pulling in main HEAD, building, running your tests by hand, and hand test + letting CI beat on it --> a release identified by a git tag and published to a binary container. But I can see how those would be useful if you had users that want to grab the bleeding edge before you've wiped the blood off it.
@mtomczak @jforseth210 Doesn't pretty much every package manager in every language do that? 🤷