Flat Tree Dependency Resolution in Npm v3
I understand that this is a hairy, messy problem they are solving, and that they traded off one aspect of the problem for another (Install order dependency! as a new &quot;feature&quot; in 2015!).<p>But I wish they had aimed higher. The better goal would be that the entire state of the node modules directory is a pure function of the contents of the package.json file plus the platform details (compiler used for native modules).<p>While they&#x27;re at it, the ecosystem could be improved considerably if there was some sort of obvious &quot;penalty&quot; applied to any package that compiles native code, because such things cause considerable extra trouble for Windows users. A visible penalty, transitively carried up the dependency tree, would discourage use of such modules with native code; projects would use them (depend on them) only if absolutely necessary instead of accidentally, all over, all the time.