微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

相互依赖的NPM软件包:peerDependency不针对“主机”软件包进行解析

如何解决相互依赖的NPM软件包:peerDependency不针对“主机”软件包进行解析

今天,我不再需要将一个库拆分为两个程序包;我们称它们为CoreLibTestCoreLibCoreLib包是一个库,TestCoreLib库是一组实用程序,参与者需要设置测试CoreLib库所需的测试环境。将其分为两个包的另一个好处是,使用CoreLib构建的应用还可以受益于TestCoreLib的使用,因为它也足以作为一个模拟库。

由于TestCoreLib使用了CoreLib的一些参与者,我将CoreLib定义为TestCoreLib peerDependency

{
  "name": "TestCoreLib","version": "1.0.0-rc.1","type": "module","peerDependencies": {
    "CoreLib": "^1.0.0-rc.0"
  }
}

相反,我将TestCoreLib定义为CoreLib devDependency ,因为CoreLib当然需要在发布前通过其测试。

{
  "name": "CoreLib","devDependencies": {
    "TestCoreLib": "^1.0.0-rc.0"
  }
}

两个候选发布软件包都已成功发布到NPM,并且我已经建立了第三个项目DemoApp,它成功使用了CoreLibTestCoreLib

{
  "name": "DemoApp","devDependencies": {
    "CoreLib": "^1.0.0-rc.0","TestCoreLib": "^1.0.0-rc.0"
  }
}

问题现在出在CoreLib项目的开发分支中。测试未完成,因为抛出以下错误

未捕获的错误[ERR_MODULE_NOT_FOUND]:找不到从/path/to/CoreLib/node_modules/CoreTestLib/lib/index.js导入的包'CoreLib'

这告诉我CoreLib并未拾取TestCoreLib,即使TestCoreLibnode_modules项目的CoreLib目录中也是如此。 TestCoreLib中的第一条语句是从CoreLib导入的,因此我假设由于将不解决该导入而引发了错误,尽管它应该...对吗?

我一直希望CoreLib使用TestCoreLib的开发版本,因此我担心将CoreLib添加devDependency(而不是{{1 }}},共peerDependency,因为我担心这样做会使TestCoreLib与其先前的发行版发生版本冲突,但是老实说,我对此情况会感到困惑。

CoreLib链接TestCoreLib的懒男孩月亮镜头也不能解决问题,因此我显然缺少一些基本的东西,我非常感谢您的帮助。

您是否知道有任何项目可以成功地将其程序包拆分为peerDependencies?

在我上方的房间里有没有大象,如果可以的话,您能叫它下车,以便我解决这个令人发指的问题并继续前进吗? LMAO

安全,健康,冷静,清晰,快乐的同胞。感谢您的考虑。

解决方法

房间里的大象是……the lazy boy moonshot,我误用了。五分钟前,我的自动打字手指告诉我,方法是在其中添加作用域内的程序包名称

$ npm link @emmington/CoreLib

npm link本身不足以符号链接作用域的软件包文件夹

Symlinking a package folder

Scoped Packaged

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。