我可以为 peerDependencies 提供回退吗?

Can I have a fallback for peerDependencies?

在我的 package.json 中,我想声明一个 peerDependency 并提供后备,如果我的包的用户没有安装这个 peerDependency。

我反复遇到这个问题,似乎找不到好的解决方案。假设我是一个由两个 npm 包组成的库的作者,其中一个包依赖于另一个:

为了实现回退行为,我尝试添加 package1 作为依赖项以及对 package2 的 peerDependency。 不幸的是,这似乎完全忽略了 peerDependency,因为 peerDependencies 不强制执行任何行为,它们只是产生警告。

我正在考虑删除依赖项,只留下 peerDependency,这将强制用户在他们想要使用时安装这两个包 package1,我想避免这种情况。

是否有任何干净的方法来实现上述行为?

阅读了很多相关内容后,没有明确的方法来实现这一点(坦率地说,正如预期的那样)。

我发现有用的一个博客 post 是 this one。在我的情况下,为了提高兼容性,我很可能会诉诸于仅使用对等依赖并牺牲一点可用性。