node.js - 如何在 NPM 中表达替代依赖关系?

标签 node.js npm dependencies alternate

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

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

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

有办法吗?

最佳答案

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

例如(在package.json中)

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

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

关于node.js - 如何在 NPM 中表达替代依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45865901/

相关文章:

javascript - 如何在函数之外访问 promise 回调值?

laravel - 未找到模块 : Error: Can't resolve 'flag-icon-css' in

git - 如何在 git 中使用 "publish"私有(private) Typescript npm 包?

javascript - 使用 VS 代码调试 Vue.js 应用程序。错误未验证断点

node.js - 如何从 package.json 文件中以表格格式获取依赖项列表

javascript - dotenv:在 nestjs 项目中找不到命令

javascript - 如何像 Mocha 在 Node.js 上使用 Jasmine 一样

node.js - NodeJS、PM2、GC、Grafana - 更好地理解

Maven - 使用依赖构建

mysql - 查找 MySql 上的存储过程依赖项