我有一个组件库,它包含多个项目,将在多个应用程序中重用。在我的组件库中:
component-acomponent-bcomponent-c (参考文献component-a)component-d (参考文献component-a和component-b))
在外部应用程序中,我有引用module-1的component-d,但是在编译外部应用程序时,我会收到错误,说明component-d找不到component-a或component-b,即使它们安装在它们旁边。
我已经深入研究了npm link、npm install和tsconfig路径映射,但我还没有找到一个允许外部应用程序编译的成功组合。
创建组件库的正确方法是什么,其中包含的组件相互引用,可以由外部应用程序使用?
注意:我已经在组件库中确保了在没有常春藤的情况下构建组件,并且我映射到相邻组件的路径使用的是dist/ component -d编译代码.
注意:我会包括从我的package.json tsconfig.ts/tsconfig.lib.ts 和文件中复制的条目,但是我在可以共享未经编辑的内容方面是有限的。如果您需要更多的信息来帮助我移动,我将看看是否可以使其足够通用,以符合公司政策。
提前谢谢,我现在很沮丧。我很感激你的指导。
编辑:我已经建立了一个通用的,缩小我的结构的例子:https://github.com/xamlzealot/angular-ivy-guq4na。这似乎没有多大帮助,但我也将其与StackBlitz:https://stackblitz.com/edit/angular-ivy-guq4na连接起来。
主要的优点是shared-components库需要引用design-system。AwesomeApp需要同时引用design-system和shared-components。NGC似乎不喜欢库引用库,我希望我在这里遗漏了一些东西,或者可能有一个解决办法。
发布于 2020-07-30 16:36:22
感谢您提供了存储库和stackblitz,在查看您的配置之后,您在主tsconfig.json中的库路径似乎没有正确的配置,这就是为什么您的导入没有被识别的原因。
在您的./tsconfig.json中,替换以下内容:
"paths": {
"shared-components": [
"dist/shared-components/shared-components",
"dist/shared-components"
],
"design-system": [
"dist/design-system/design-system",
"dist/design-system"
]
}通过这一点:
"paths": {
"shared-components": [
"projects/shared-components/src/public-api.ts"
],
"design-system": [
"projects/design-system/src/public-api.ts"
]
}请允许我建议,将来如果您的库和应用程序采用monorepo的路线来使用Nx https://nx.dev/angular,那么它是一个非常有用的工具,可以在同一个地方管理您的所有库和应用程序,从而使您能够访问功能强大的CLI,这将减轻此类问题。
https://stackoverflow.com/questions/63160243
复制相似问题