如何定义多个npm peerDependency

问题描述 投票:0回答:2

我创建了一个 Phaser 插件,但我不确定如何为其正确定义peerDependency。问题是 Phaser 最近已被复制并移动到新的存储库“phaser-ce”。该插件取决于“[电子邮件受保护]”或“[电子邮件受保护]”。

"peerDependencies": {
  "phaser": "2.x" || "phaser-ce": "2.x"

显然这行不通……这可能吗? 谢谢!

npm dependencies
2个回答
1
投票

应该是这样的:

"peerDependencies": {
    "phaser": "2.x",
    "phaser-ce": "2.x"}

当您需要同一包的不同版本时,可以使用双管,例如:

"peerDependencies": {
    "phaser": "2.x || 3.x",
    "phaser-ce": "2.x"}

0
投票

不幸的是,截至(几乎)2024 年,不可能将这两个包中的任何一个定义为对等依赖项。

您最好的选择是将两者添加到您的

peerDependencies
peerDependenciesMeta
package.json 的属性中,如 @Doruk 建议

{
    "peerDependencies": {
        "phaser": "2.x",
        "phaser-ce": "2.x"
    },
    "peerDependenciesMeta": {
        "phaser": {
            "optional": true
        },
        "phaser-ce": {
            "optional": true
        }
  }
}

并在您的

README

中包含一些附加信息
## Installation

To use this library, you need to have either `phaser` or `phaser-ce` package installed in your project

根本不要将它们包含在 package.json 中,并坚持

README
加上一些运行时检查。

© www.soinside.com 2019 - 2024. All rights reserved.