0

我今天发现了需要将一个库分成两个包的困难方法;让我们打电话给他们CoreLibTestCoreLib。该CoreLib包是一个库,该TestCoreLib库是实用程序的捆绑包,参与者需要设置测试CoreLib库所需的测试环境。将它分成两个包的额外好处是,使用它构建的应用程序CoreLib也可以从使用中受益,TestCoreLib因为它也足以作为一个模拟库。

由于TestCoreLib使用了来自 的一些演员CoreLib,我将其定义CoreLib为的peerDependencyTestCoreLib

{
  "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,所以我担心添加CoreLibdevDependency(而不是peerDependency) ,TestCoreLib因为我担心这样做会锁定CoreLib与它自己的先前版本的版本冲突,但老实说,我对什么感到困惑在这种情况下会发生。

TestCoreLib链接到的懒惰男孩月球拍摄CoreLib也不能解决问题,所以我显然错过了一些基本的东西,我非常感谢你的帮助。

你知道有哪些项目成功地将它们的包拆分为 peerDependencies 以供你参考吗?

房间里有没有一只大象坐在我的头上,如果有,你能告诉它下车,这样我就可以解决这个令人抓狂的问题并继续前进吗?LMAO

安全、好、冷静、清晰、快乐的人类同胞。感谢您的考虑。

4

1 回答 1

0

房间里的大象是……懒惰的男孩登月和我对它的误用。五分钟前,我的自动打字手指通过添加范围包名称告诉我

$ npm link @emmington/CoreLib

npm link本身不足以对作用域包文件夹进行符号链接。

符号链接包文件夹

范围打包

于 2020-10-26T21:03:04.450 回答