正如标题所示,我已经使用ng generate library lib
生成了一个基础库;然后生成了另一个名为lib2
的库。我希望使用lib
中的一些基本组件或服务,因此我在lib
模块中导入了lib2
,但是npm run build lib2
失败了。
我收到此错误:error TS2307: Cannot find module 'lib'
。
如何正确导入基础库?任何帮助表示赞赏。
您将需要先构建您的库,请参阅此问题Angular 6 CLI -> how to make ng build build project + libraries
[如果您查看tsconfig.json
文件,它已经通过添加lib的路径进行了修改-因此您需要构建它们以填充dist文件夹。
"paths": {
"lib": [
"dist/lib"
],
"lib2": [
"dist/lib2"
]
}
我将添加一个答案,扩展使用nx扩展的概念(我在我的所有项目中都使用了quicke / stubs):
这假设您已设置ng-packagr以在nx工作区中构建库。
创建您的库,等等。假设您拥有lib1和lib2。
现在,假设lib1使用来自lib2的内容。
这听起来可能有点奇怪,但是如果您考虑一下,感觉就在那里。您使用库的方式与在外部应用程序中使用库的方式完全相同(嗯,并不是完全相同,您正在链接它们,但这模拟了package.json安装的过程)。
请注意,在单声道仓库中,您也可以仅跨库使用相对导入(再次忽略tsconfig路径条目,而仅使用相对路径从其他库中获取文件)。它有效,可能在技术上不正确,但可以为您省去一些麻烦。
我在一个大项目中就碰到了这个问题,这是我的解决方案,我发现这两种方法都满足了需求,并向团队和我展示了他们所说的一切(拒绝接受。讨论团队的决定)。
请注意,我认为没有理由在非nx扩展设置中将无法正常工作。但是我很少在任何地方与他们合作,我的工作很大一部分是宣传monorepo开发人员,当与Angular面对时,NX是我与团队合作的对象。