使用 NX Monorepo 从另一个库导入构建库

Posted

技术标签:

【中文标题】使用 NX Monorepo 从另一个库导入构建库【英文标题】:Building library with imports from another library using NX Monorepo 【发布时间】:2019-11-24 12:38:09 【问题描述】:

情况就是这样。我正在使用 Nrwl NX Monorepo。我有 2 个库 lib-a 和 lib-b 都是通过 NX 创建的可发布库。现在我在 lib-a 中创建了一个 MyClass.ts。在workspace/tsconfig.json 路径下,NX 自然会为此lib-a 创建一个别名(“@workspace/lib-a”:[“libs/lib-a/src/index.ts”])。到目前为止,一切都很好。 现在我们可以在工作空间/monorepo 中的任何地方使用这个类,方法是将它导入 "import MyClass from '@workspace/lib-a';

不幸的是,我们无法构建导入 MyClass 的 lib-b。当我们尝试这样做时,我们会收到以下错误。所以问题是我们如何构建 lib-b ?

PS NX monorepo 实际上不支持链接 2 个可发布库的这种常见场景,这似乎很奇怪。

"错误 TS6059: 文件 "d:/workspace/libs/lib-a/src/index.ts" 不在 'rootDir' "d:\workspace\libs\lib-b\src" rootDir 下包含所有源文件”

【问题讨论】:

【参考方案1】:

尝试添加

"paths":  "@workspace/*": ["dist/libs/*"] 

到您的 tsconfig.lib.json 文件中。这应该可以解决问题。

【讨论】:

以上是关于使用 NX Monorepo 从另一个库导入构建库的主要内容,如果未能解决你的问题,请参考以下文章

构建启用了Ivy的monorepo Angular9库是个坏主意

在 Ngrx-nx Monorepo 中管理共享样式和资产

在 Ubuntu 上构建库,在 Arch 上的项目中使用它 - 不构建

Angular 6 库:在 CI 管道中构建库以创建 lib 版本

使用具体(旧)Angular 版本创建 NX Monorepo

xcode maven插件无法构建库