如何使用 peerDependencies 测试 npm 模块?

Jef*_*ner 25 mocha.js node.js npm gulp-mocha peer-dependencies

我是新来理解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)
  );
}
Run Code Online (Sandbox Code Playgroud)

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

反馈和建议最受赞赏。

dee*_*wan 25

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

// package.json
"peerDependencies": {
    "ioredis": "4.x"
},
"devDependencies": {
    "ioredis": "4.x"
}
Run Code Online (Sandbox Code Playgroud)

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


Jef*_*ner 6

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

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

  • 我添加了与 peerDependencies 中相同的 devDependency,以便我的单元测试运行。这些似乎是最合适的方法。 (2认同)