Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法重新组织node_模块?_Javascript_Node.js_Npm - Fatal编程技术网

Javascript 有没有办法重新组织node_模块?

Javascript 有没有办法重新组织node_模块?,javascript,node.js,npm,Javascript,Node.js,Npm,有大而深的节点_模块目录。还有许多子文件夹,它们具有位于不同子目录中的相同模块。有时模块的版本相同,有时次要版本不同 是否有一种工具可以重组节点模块以删除重复的节点,将它们放在根目录中,并以某种方式仍然有一堆模块来优化它?NPM层次结构实际上相当复杂,他们已经做了大量的工作来优化它。您在这里损失的最多的是一点磁盘空间。如果你真的需要删减你的应用程序的包结构,那么你可以看看哪一个是直接内置在npm中的,并且完全按照你的要求去做(尽可能多地合并重复项) 我知道很多人反对签入node_modules目

有大而深的节点_模块目录。还有许多子文件夹,它们具有位于不同子目录中的相同模块。有时模块的版本相同,有时次要版本不同


是否有一种工具可以重组节点模块以删除重复的节点,将它们放在根目录中,并以某种方式仍然有一堆模块来优化它?

NPM层次结构实际上相当复杂,他们已经做了大量的工作来优化它。您在这里损失的最多的是一点磁盘空间。如果你真的需要删减你的应用程序的包结构,那么你可以看看哪一个是直接内置在npm中的,并且完全按照你的要求去做(尽可能多地合并重复项)

我知道很多人反对签入node_modules目录,但在生产应用程序中,我们发现签入node_modules可以更容易地确定应用程序中的致命更改。当然,你通常知道你的应用程序在上一次
npm更新后坏了,但是如果你的应用程序像我们的一样大,那么它就没有足够的粒度来快速有效地解决问题。因此,在大型生产应用程序中(即不是发布到NPM的库),我在签入它们之前使用
NPM deduple
简化包结构

如果您正在编写其他人将使用的代码(通过NPM或其他方式),那么签入节点单元模块不是最好的主意,您应该通过将节点单元模块添加到版本控制系统的忽略列表来避免这样做。您还应该确保您在
包中是依赖项。json
是特定的版本号,范围尽可能小(请不要在生产应用程序中用星号代替版本号:/)


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

只是好奇:您是否发现一些模块是重复的,包括版本?我想知道你们有多少个模块——一些统计数据会很有趣。你们看过《npm重复数据消除》吗@john zwinck
npm列表| wc-l
显示了大约3000个模块您有3000个模块吗?这些依赖关系是针对单个项目、多个项目还是整个系统?我也不知道有多少个重复。考虑到
node\u modules/
在.gitignore中,并且该节点在加载模块后缓存该模块,即,它不会在其他模块需要它作为依赖项时重新加载该模块,那么重新组织除了节省磁盘空间之外还有什么好处吗?