npm
downloads every dependency recursively. If a
depends on d (= 1.2.3)
and b
depends on d (= 1.2.4)
, then both versions of d
get downloaded into a
and b
’s respective node_modules
.
All other package managers I’m aware of resolve dependencies into a flat list then download, and you can only have one version of the same package on your system.
labsin@sh.itjust.works 9 months ago
Other package managers, like nuget, throw errors if all dependencies on a package cannot be met by a single version.
This is probably the result of it copying all libraries in the same output directory and that .net cannot load 2 different versions of the same library so more an application restriction.
The downside of this is that packages often can’t use newer features if they want to not block the users of that library and that utility libraries have to have his backwards compatibility so applications can use the latest version while dependent libraries target an older version. Often applications keep using older versions with known security issues.
QuazarOmega@lemy.lol 9 months ago
Damn, sounds like a big headache x.x