有大而深的node_modules目录。并且有许多具有相同模块的子文件夹位于不同的子目录中。有时相同版本的模块,有时会出现次要版本的差异。
是否有重新组织node_modules的工具可以删除重复项,将它们放在根目录中,还有一堆模块可以优化它?
答案 0 :(得分:3)
NPM层次结构实际上相当复杂,他们已经做了很多工作来优化它。你在这里失去的最多是一个小磁盘空间。如果您真的需要修剪应用程序的包结构,那么您可以查看内置于npm的npm dedupe并完全按照您的要求进行操作(尽可能合并重复项)。
我知道很多人反对在node_modules目录中检查,但在生产应用程序中,我们发现检查node_modules可以更容易地确定应用程序中的致命更改。当然,你通常知道你的应用程序在最后npm update
之后就已经破了,但如果你的应用程序像我们的那样大,那么它就不够精细,无法快速有效地解决问题。因此,在大型生产应用程序中(即不是将库发布到NPM),我在使用npm dedupe
之前简化了包结构。
如果您正在编写其他人将使用的代码(通过NPM或其他方式),那么检查node_modules不是最好的主意,您应该通过将node_modules添加到版本控制系统的忽略列表来避免这样做。您还应该确保package.json
中的依赖项是具有尽可能少的范围的特定版本号(请不要在生产应用程序中使用星号代替版本号:/)。
如果您遵循这些基本模式,那么您可以忘记node_modules目录并让npm照顾您。