我今天发现了需要将一个库分成两个包的困难方法;让我们打电话给他们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
安全、好、冷静、清晰、快乐的人类同胞。感谢您的考虑。