28

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

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

比如我有一个包,它有一个peer依赖,一个自定义的logger,这个logger需要被它的宿主包配置好才能使用。

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

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

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

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

4

2 回答 2

32

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

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

它运行良好,到目前为止使用这种方法没有问题。

于 2019-01-22T10:05:33.353 回答
7

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

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

于 2019-01-21T19:17:38.633 回答