package.json中peerDependencies是否具备传递性?依赖链场景咨询
问题解答
核心结论
不需要。B 和 C 的 package.json 完全没必要声明 E 为 peerDependency。
原因说明
- peerDependency 是用来声明当前包直接用到的、需要上层宿主环境提供的依赖。
B和C本身根本不用E,没有直接依赖关系,完全没必要多此一举。 D对E的 peerDependency 要求,只要最终的宿主包(也就是这个依赖链里的A)能满足就行——A已经明确依赖了E,完全能覆盖D的需求。
对应 jsdom 和 canvas 的场景
你查到 jsdom 已经在 peerDependency 里声明了 canvas,这种情况下你们的包不需要再重复声明 canvas 为 peerDependency。只要确保最终使用你们包的项目(终端项目)安装了符合 jsdom 版本要求的 canvas 即可;如果你们的包是直接给终端用户使用的,那你们要么在自己的 dependencies 里添加 canvas,要么提醒用户手动安装,不用放到 peerDependency 里。
内容的提问来源于stack exchange,提问作者Daniel Kaplan
相关产品推荐
相关产品推荐

