有什么办法可以重新组织node_modules吗?

有大而深的node_modules目录。 并且有许多子文件夹位于不同的子目录中。 有时模块的版本相同,有些时候版本不同。

是否有一个工具重组node_modules删除重复项,把它们放在根目录,不知何故还有一堆模块来优化这个?

NPM层次结构实际上相当复杂,他们已经做了很多工作来优化它。 你在这里失去的最多的是一个小磁盘空间。 如果你真的需要修剪你的应用程序的包装结构,那么你可以看看npm的重复数据删除 ,这是内置在npm中,正是你要求的(尽可能合并重复)。

我知道很多人反对检查node_modules目录,但是在生产应用程序中,我们发现检查node_modules使得更容易地locking应用程序中的致命变化。 当然你通常知道你的应用程序在最后一次npm updatenpm update但是如果你的应用程序和我们的应用程序相当大,那么它就不够精细,不能快速有效地解决问题。 因此,在大型的生产应用程序中(即不是将库发布到NPM),我使用npm dedupe来简化包装结构,然后再进行检查。

如果您正在编写其他人将使用的代码(通过NPM或其他方式),那么检查node_modules并不是最好的办法,您应该避免通过将node_modules添加到版本控制系统的忽略列表中来避免这种情况。 你也应该确保你在package.json中的依赖是具有尽可能less的范围的特定版本号(请不要在你的生产应用中使用星号代替版本号:/)。

如果你遵循这些基本的模式,那么你可以忘记node_modules目录,让npm照顾你。