我今天发现了需要将一个库分成两个包的困难方法;让我们打电话给他们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当然需要在发布之前通过其测试。CoreLibCoreLib
{
"name": "CoreLib",
"version": "1.0.0-rc.1",
"type": "module",
"devDependencies": {
"TestCoreLib": "^1.0.0-rc.0"
}
}
两个候选发布包都已成功发布到 NPM,我已经设置了第三个项目,它成功地DemoApp使用了这两个包。CoreLibTestCoreLib
{
"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 ,所以我假设错误被抛出,因为即使它应该......也没有解决导入问题。对吗?TestCoreLibTestCoreLibnode_modulesCoreLibTestCoreLibCoreLib
我一直希望 的开发版本CoreLib被 使用TestCoreLib,所以我担心添加CoreLib为devDependency(而不是peerDependency) ,TestCoreLib因为我担心这样做会锁定CoreLib与它自己的先前版本的版本冲突,但老实说,我对什么感到困惑在这种情况下会发生。
TestCoreLib链接到的懒惰男孩月球拍摄CoreLib也不能解决问题,所以我显然错过了一些基本的东西,我非常感谢你的帮助。
你知道有哪些项目成功地将它们的包拆分为 peerDependencies 以供你参考吗?
房间里有没有一只大象坐在我的头上,如果有,你能告诉它下车,这样我就可以解决这个令人抓狂的问题并继续前进吗?LMAO
安全、好、冷静、清晰、快乐的人类同胞。感谢您的考虑。