我怎样才能解开节点模块?

我目前的npm版本是3.7.3。 以前,我的节点模块中只安装了所需的软件包。 但是现在,当我查看节点模块时,它们全都变平了,并且有100多个文件夹可见。 我更喜欢旧的方式,你可以进入个人文件夹,并看到他们的依赖。 这里是一个类似的线程: 为什么npm安装许多软件包到“/ node_modules”,而不是只有一个?

我尝试运行npm uninstall没有太多的成功。

基本上,你是运气不好… NPM不提供任何configuration选项。 它将嵌套依赖关系,如果它必须为了解决版本冲突,但只在这种情况下。 您唯一的select是降级NPM(不推荐)。 但是,如果您只是需要查看为了信息原因而嵌套的依赖项,则可以使用npm ls 。 它会画一个图。

有关更多讨论,请参阅相关的NPM问题: https : //github.com/npm/npm/issues/9809

现在,节点js的LTS不包括一个NPMv2我发现自己再次陷入这个问题。 对于你们也抓到了,@KevinBurdett提到的链接也有一些答案。

可以使用npm自己强制降级npm(使用sudo或等效的方式)。 从https://github.com/npm/npm/issues/9809#issuecomment-179702479

作为根,我只需要在每次我新版本的Node出现时在我的系统上执行npm install -g 'npm@<3' ; 你的里程可能会有所不同,但是对于“降级”来说相当简单:-)

另一种方法是使用节点版本pipe理器(NVM): https : //github.com/creationix/nvm 。 您的里程可能会有所不同,取决于个人configuration/偏好/平台。

也就是说,npm 3和平面依赖树的问题将在今后与我们同在…现在可能是开始接受这个改变的时候了。

我个人的怨恨是,它使node_modules文件夹难以置信地在IDE中工作,特别是当你需要查看你的直接相关模块的实现,而不是先涉及100个与子模块无关的子模块我。 当你阅读这个问题的评论的时候,似乎我并不孤单。 只有当这种变化没有从旧系统到新系统的适当迁移时,我才会质疑npm本身的可行性。 对我来说,npm2永远是国王。