【问题标题】:How can I express alternative dependencies in NPM?如何在 NPM 中表达替代依赖项?
【发布时间】:2021-07-13 04:33:47
【问题描述】:

在表达 Debian 软件包的依赖关系时,您可以使用类似 exim | mail-transport-agent 的语法来指示您的软件包需要任一 eximmail-transport-agent,但它并不关心哪个。

我想在 NPM 中表达类似的东西。有没有办法做到这一点?具体来说,假设我希望我的应用程序能够更好地表达对 either mikesthing-impl1 v1.7 mikesthing-impl2 v2.1 或更好的依赖。我希望能够这样说:

dependencies: {
  "mikesthing": {
    "mikesthing-impl1": "^1.7",
    "mikesthing-impl2": "^2.1"
  }
}

有办法吗?

【问题讨论】:

    标签: node.js npm dependencies alternate


    【解决方案1】:

    不,package.json 中没有指定这种逻辑的功能。但是,您可以在 scripts 中实现 postinstall 脚本,该脚本将在安装所有其他依赖项后执行,您可以在其中编写此类(或任何类型)行为的脚本。

    例如(在package.json

    "scripts": {
      "postinstall": "./bin/postinstall"
    

    一个好的起点是运行npm view {package} 以获取详细说明注册表中可用版本的 JSON 对象。

    【讨论】:

    • 感谢这个坏消息——嘿,最好知道,对吧?不幸的是,在这种情况下,安装后脚本不会让我得到我想要的。我可以编写一个脚本来拒绝当前包的安装,除非至少有一个替代依赖项到位,但这将是一个程序实现。我需要的是一个声明——其他代码可以查看和理解的东西。那好吧。你不能总是得到你想要的。
    猜你喜欢
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-21
    • 2019-12-13
    相关资源
    最近更新 更多