【发布时间】:2022-01-18 18:21:11
【问题描述】:
我有一个node.js 项目。在这个项目中我有依赖A和依赖B,我也注意到它的依赖里面的依赖A有依赖B,所以我的问题是我应该安装依赖B还是我可以使用它来自依赖A ?
【问题讨论】:
标签: javascript node.js webpack dependencies package.json
我有一个node.js 项目。在这个项目中我有依赖A和依赖B,我也注意到它的依赖里面的依赖A有依赖B,所以我的问题是我应该安装依赖B还是我可以使用它来自依赖A ?
【问题讨论】:
标签: javascript node.js webpack dependencies package.json
你可以,但是...
如果依赖项 A 不再依赖于 B 会发生什么?
因此,您应该在代码中添加所需的所有包作为依赖项。
编辑
需要考虑的其他要点:
您的代码已针对代码的 1.0.0 版本构建,A 已将所需的 B 版本升级到代码的 2.0.0。
假设依赖项 B 遵循 SEMVER,则版本 1.0.0 和版本 2.0.0 之间将发生重大的重大更改。如果 B 不遵循 SEMVER,则可能随时应用重大更改。
NPM(Yarn 和其他包管理器)会处理这个问题,并为不同的包和整个项目提供正确的版本。这意味着包 B 的 1.0.0 版将直接放在您的 node_modules 文件夹中,而包 B 的 2.0.0 版将放在包 A 的 node_modules 文件夹中。
当包含库、框架等时,通常使用库/框架直接使用的包,即使您没有将它们放在参考中。
这应该保持在最低限度,并且只根据库/框架文档,因为如果您需要升级库/框架(您应该经常这样做),它可能会导致复杂化。
【讨论】:
B 和版本2.0.0 和依赖A 使用依赖B 和版本1.0.0 会发生什么?会有什么影响?