我目前的npm版本是3.7.3。以前,我的节点模块中只安装了所需的软件包。但是现在,当我查看节点模块时,它们已经变平并且有100 +个文件夹可见。我更喜欢旧的方式,您可以进入单个文件夹并查看其依赖项。 这是一个类似的线程: Why does npm install many packages into "/node_modules" instead of only one?
我尝试运行npm uninstall
但没有取得多大成功。
答案 0 :(得分:3)
基本上,你运气不好...... NPM没有提供任何关于此的配置选项。如果必须为了解决版本冲突,它将嵌套依赖项,但仅限于此情况。您唯一的选择是降级NPM(不推荐)。但是,如果您只是出于信息原因需要查看嵌套的依赖项,则可以使用npm ls
。它会画出一个图表。
有关更多讨论,请参阅此相关NPM问题:https://github.com/npm/npm/issues/9809
答案 1 :(得分:0)
既然节点js'LTS不包含NPMv2,我发现自己又遇到了这个问题。 对于那些你也知道@KevinBurdett提到的the link,也有一些答案。
你可以使用npm本身强制降级npm(使用 sudo 或等效的)。来自https://github.com/npm/npm/issues/9809#issuecomment-179702479:
作为root我每次都在我的系统上执行
npm install -g 'npm@<3'
一个新版本的Node出来了;你的里程可能会有所不同,但确实如此 “降级”相当微不足道: - )
另一种方法是使用节点版本管理器(NVM):https://github.com/creationix/nvm。您的里程可能因个人配置/偏好/平台而异。
那就是说,npm 3和平依赖树的问题将从以后开始......现在可能是开始接受这种变化的时候了。
我对此的个人怨恨是,它使得node_modules
文件夹难以在IDE中使用,尤其是当您需要查看直接依赖模块的实现时,而不首先涉及100的sub -sub模块与我无关。当你阅读这个问题的评论时,我似乎并不孤单。只有在没有正确从旧系统迁移到新系统的情况下进行此类更改时,它才会让我质疑npm本身的可行性。对我来说,npm2永远是王道。