如何解决相互依赖的NPM软件包:peerDependency不针对“主机”软件包进行解析
今天,我不再需要将一个库拆分为两个程序包;我们称它们为CoreLib
和TestCoreLib
。 CoreLib
包是一个库,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
,它成功使用了CoreLib
和TestCoreLib
。
{
"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
,即使TestCoreLib
在node_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
本身不足以符号链接作用域的软件包文件夹。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。