【问题标题】:How to test an npm module with peerDependencies?如何使用 peerDependencies 测试 npm 模块?
【发布时间】:2019-06-12 06:28:05
【问题描述】:

我是新了解 peerDependencies,并且我已阅读以下参考资料,以了解如何测试 npm 模块在其 package.json 中包含 peerDependencies:

但是,我还没有找到一个明确的解决方案来测试带有 peerDependencies 的 npm。有些人建议将 peerDependencies 添加为全局变量,有些人建议将 peerDependencies 包含在 devDependencies 中,但似乎都不对。

例如,我有一个具有对等依赖项的包,一个自定义记录器,而这个记录器需要由其宿主包配置才能使用。

这是我使用这个 Gulp 任务执行大多数脚本测试的方式:

function testRunner() {
  return (
    gulp
      .src('./tests/**/*.js', { read: false })
      .pipe(
        mocha({
          exit: true,
          timeout: 10000
        })
      )
      .on('error', console.error)
  );
}

我确实收到了一个有用的建议(请参阅下面的 cmets,@estus)来使用 npm-install-peers,但是,我还不确定它是否可以在使用前配置对等依赖项,因为它将由主机包执行。

非常感谢您的反馈和建议。

【问题讨论】:

  • “测试”到底是什么意思?您是否正在寻找编写自动化测试?您是在谈论手动测试某些东西吗?你在说别的吗?
  • @pedro-a 感谢您的回复,我很感激我应该澄清“测试”的含义。我刚刚使用执行 mocha 测试的 Gulp 任务编辑了我的问题。所以,我所说的测试首先是本地化,然后是 CI 自动化测试。
  • @estus 感谢您的建议,我现在正在检查它并与它的作者联系。我忘记了一个细节,peer依赖也需要由peer的父级配置。将该细节添加到我最初的问题中。
  • 我目前正在检查另一个 npm 包:npm install-peerdeps

标签: node.js npm mocha.js gulp-mocha peer-dependencies


【解决方案1】:

就我而言,我上次开发了一个库,它使用ioredis 作为对等依赖项。我的解决方案是将该库也放在开发依赖项中。

// package.json
"peerDependencies": {
    "ioredis": "4.x"
},
"devDependencies": {
    "ioredis": "4.x"
}

使用这种方法效果很好,到目前为止没有问题。

【讨论】:

  • 另外,要在不同的对等版本上测试你的包,你可以暂时将开发依赖项更改为特定版本,重新安装依赖项(我使用npm ci),然后运行你的测试。
【解决方案2】:

我已经联系了 npm-install-peers 的作者,以及其中一位作者的回复,

在 CI 上测试您的包/项目时,我相信 正确的做事方法是手动将您的对等依赖项添加到 您的开发依赖项。不需要这个小工具。

【讨论】:

  • 我添加了与 peerDependencies 中相同的 devDependency,以便我的单元测试运行。这些似乎是最合适的方法。
猜你喜欢
  • 2016-06-02
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多