NodeJS-为什么npm不共享依赖项?

cer*_*am1 3 node.js npm node-modules

即使我构建package.json并运行

npm install ./

npm安装依赖项的依赖项,即使它完全相等。

例如)ExpressJs 4.0.0-rc4 node_modules / cookie === cookie-parser node_modules / cookie

当nodeJs加载文件时,将按文件缓存它。因此,如果npm不共享依赖项,则同一模块可以被解析几次,并使用更多的内存。

cla*_*lay 5

原因是为了项目维护和一致(且简单)的用法。现在,每个软件包都完全独立于其他软件包,并且每个软件包都遵循自己的package.json文件。

如果一个程序包更新了其依赖关系,则NPM只需检查该程序包。如果它共享一个引用,则不仅需要为已更改的版本更新新版本,还需要为另一个软件包切换并重新引用旧版本。或者,如果删除了共享参考的软件包,则NPM将需要重新检查所有其他软件包,以查看是否还有其他软件包在使用它。和其他奇特的用例共享时。

如今,存储价格便宜,并且大多数NPM模块的文件大小都很小。易于维护和一致的更新比节省几MB的文件有价值。

  • 我认为 npm 模块的尺寸并不小。如果一个项目依赖很多库,那么将整个库复制到一个文件夹中会花费很多时间。对我来说,这很麻烦,因为我浪费了很多时间和存储空间来做一个仅用于测试建议的项目。 (3认同)