@
mritd 存在外部非 npm 依赖的包可以不要用,npm 一开始的设计允许外部依赖还是一个挺 open 的,不然现在 github package 也没办法用这个 cli。这是给你用公司私有源或者紧急情况下自己 release fork 的包等等解决方案。
这么多人吐槽不用全局包,但 node 社区完全是有的啊,用 yarn2 不就完事了,什么 "node.js 就是因为这个死的" 都出来了,真的有了解过这个社区吗。
而且说到局部包和版本控制这个问题也和社区本身有关,因为社区的包太多了而且非常活跃,版本爆炸依赖复杂,所以这也是一个当时看起来比较好的解决方式,虽然以如今的眼光看有一些弊端,如分析依赖对比可用版本更新需要花费很多时间、磁盘读写时间长、没有过期危险的依赖警告 (有所改善了),但社区也一直在推陈出新,包括楼上说的缓存,yarn 就做的不错,还有很多 CI 也开始了专业级别的 nodejs 缓存等等,以我的视角看,在众多语言社区的包管理上,虽然算不上好,但绝不至于让语言死掉。