npm - 相互依赖的 NPM 包:peerDependency 不针对“主机”包解析
问题描述
我今天发现了需要将一个库分成两个包的困难方法;让我们打电话给他们CoreLib
和TestCoreLib
。该CoreLib
包是一个库,该TestCoreLib
库是实用程序的捆绑包,参与者需要设置测试CoreLib
库所需的测试环境。将它分成两个包的额外好处是,使用它构建的应用程序CoreLib
也可以从使用中受益,TestCoreLib
因为它也足以作为一个模拟库。
由于TestCoreLib
使用了来自 的一些演员CoreLib
,我将其定义CoreLib
为的peerDependency。TestCoreLib
{
"name": "TestCoreLib",
"version": "1.0.0-rc.1",
"type": "module",
"peerDependencies": {
"CoreLib": "^1.0.0-rc.0"
}
}
相反,我将devDependency定义TestCoreLib
为as当然需要在发布之前通过其测试。CoreLib
CoreLib
{
"name": "CoreLib",
"version": "1.0.0-rc.1",
"type": "module",
"devDependencies": {
"TestCoreLib": "^1.0.0-rc.0"
}
}
两个候选发布包都已成功发布到 NPM,我已经设置了第三个项目,它成功地DemoApp
使用了这两个包。CoreLib
TestCoreLib
{
"name": "DemoApp",
"version": "1.0.0-rc.1",
"type": "module",
"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
也没有被 拾取。中的第一条语句是 import from ,所以我假设错误被抛出,因为即使它应该......也没有解决导入问题。对吗?TestCoreLib
TestCoreLib
node_modules
CoreLib
TestCoreLib
CoreLib
我一直希望 的开发版本CoreLib
被 使用TestCoreLib
,所以我担心添加CoreLib
为devDependency
(而不是peerDependency
) ,TestCoreLib
因为我担心这样做会锁定CoreLib
与它自己的先前版本的版本冲突,但老实说,我对什么感到困惑在这种情况下会发生。
TestCoreLib
链接到的懒惰男孩月球拍摄CoreLib
也不能解决问题,所以我显然错过了一些基本的东西,我非常感谢你的帮助。
你知道有哪些项目成功地将它们的包拆分为 peerDependencies 以供你参考吗?
房间里有没有一只大象坐在我的头上,如果有,你能告诉它下车,这样我就可以解决这个令人抓狂的问题并继续前进吗?LMAO
安全、好、冷静、清晰、快乐的人类同胞。感谢您的考虑。
解决方案
推荐阅读
- design-patterns - 如何通过 GROK 在这个小日志文件中获取不同类型的消息?
- ruby-on-rails - 服务器上的 ssl 认证期间“myserver.key”文件的模数不匹配
- flutter - 使用 Flutter 和 Dart,我怎样才能让这个 Future 工作?
- arduino - 从处理到ardunio的整数像素数组到位打包字符串
- python - 如何制作一个可以多次运行程序的python循环?
- amazon-web-services - AWS 站点到站点 VPN 高可用性
- json - 如何将 JSON 对象的日期字段发送到 struts2 操作
- python - 无法使用 3D 掩码和索引将值分配给 numpy 数组
- jquery - JQuery 循环表并从 td 中删除一个 href
- python - 在没有密钥的情况下运行 Flask 有多糟糕?