3

即使我构建 package.json 并运行

npm install ./

npm install dependencies of dependencies 即使它完全相等。

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

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

4

1 回答 1

4

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

如果一个包更新了它的依赖,NPM 只需要检查那个包。如果它共享一个引用,它不仅需要为更改的那个更新新版本,还需要为另一个包切换并重新引用旧版本。或者,如果删除了共享引用的包,NPM 将需要重新检查所有其他包以查看其他包是否仍在使用它。以及共享时的其他奇怪用例。

现在存储很便宜,而且大多数 NPM 模块的(文件)大小都很小。易于维护和持续更新比保存几 MB 的文件更有价值。

于 2014-04-07T13:47:09.407 回答