有没有办法重新组织node_modules文件夹?

4

目录中有一个庞大而深入的node_modules目录。它包含许多子文件夹,这些子文件夹中的相同模块位于不同的子目录中。有时是相同版本的模块,有时是次要版本上的差异。

是否有工具可以重新组织node_modules以删除重复项,将它们放在根目录中,并以某种方式优化这些模块的一堆?


只是好奇:你是否发现一些模块是重复的,包括版本?我想知道你有多少个模块 - 一些统计数据会很有趣。 - John Zwinck
3
你看过 npm dedupe 吗? https://npmjs.org/doc/cli/npm-dedupe.html - loganfsmyth
1
考虑到 node_modules/ 已经被加入了 .gitignore,而且 Node.js 会在模块被加载后缓存它,也就是说每次其它模块需要依赖它时不会重新加载,那么重新组织的好处除了节省磁盘空间外还有什么呢? - Thalis K.
我的回答有帮到你吗,Serg? - Chev
Alex,是的,你帮了我很多。 - Serg
显示剩余3条评论
1个回答

4
NPM层次结构实际上相当复杂,他们已经做了很多工作来优化它。你失去的最多只是一点磁盘空间。如果你真的需要为你的应用程序修剪软件包结构,那么可以查看内置在npm中的npm dedupe,它正是你所要求的(尽可能合并重复项)。
我知道很多人反对检查node_modules目录,但在生产应用程序中,我们发现检查node_modules会使我们更容易确定应用程序中的致命变化。当然,你通常知道你的应用程序在最后一个npm update之后崩溃了,但如果你的应用程序像我们的一样非常大,那么这根本不足以快速高效地解决问题。因此,在大型生产应用程序(即不发布到NPM的库)中,我使用npm dedupe在检查之前简化软件包结构。
如果您正在编写供他人使用的代码(通过NPM或其他方式),那么检查node_modules并不是最好的选择,您应该将node_modules添加到版本控制系统的忽略列表中以避免这样做。您还应确保在package.json中的依赖项是具体的版本号,尽可能少的使用范围(请不要在生产应用程序中将星号放在版本号的位置 :/)。
如果您遵循这些基本模式,那么您可以忘记node_modules目录,并让npm为您处理。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接