Angular 9个具有子入口点循环依赖的库

Angular 9 library with subentry points circular dependency

我有一个关于 angular 库辅助入口点设置的非常具体的问题。我真的不明白当它们相互依赖(包括主要入口点)时我如何设置它以使其工作。我已经阅读了 ng-packagr 的文档以及很多问题和堆栈问题,但没有找到真正好的答案。问题是我想将我们庞大的内部库分解成更小的部分,以便对于不需要一切的应用程序来说,导入和依赖项变得更小。

这就是我想要达到的目标:

这就是文件夹结构:

projects\my-lib
-- constants\
---- ...
---- package.json
---- public_api.ts
-- functions\
---- ...
---- package.json
---- public_api.ts
-- lang
---- ...
---- package.json
---- public_api.ts
-- broker
---- ...
---- package.json
---- public_api.ts
-- signalr
---- ...
---- package.json
---- public_api.ts
-- sso
---- ...
---- package.json
---- public_api.ts
-- src <-- the main entry point, as setup from the ng g library
---- lib
------ modules <-- the old ones from where i want to source parts out in secondary paths
-------- auth
-------- config
-------- footer
-------- header
-------- log
-------- state
-------- ...
---- public_api.ts
-- ng-package.json <-- main entry point
-- package.json <-- main entry point

现在我的问题是:

前两个,常量和函数,按预期工作,因为它们不依赖于任何东西。

现在,当我想从主 @my/my-lib 中的 @my/my-lib/lang 导入一些东西并反向时,我收到一个循环依赖警告。这首先对我来说听起来合乎逻辑,因为 ng-packagr 不知道先构建哪个。

到目前为止我读到的是次要入口点每次都首先构建,当我没有从 @my/my-lib/lang@my/my-lib 内部服务的依赖项时,这将完美地工作,那么我该如何设置才能将 @my/my-lib/lang 中的内容从 @my/my-lib 导入并反转?

根据我的经验,如果您使用 Angular CLI,辅助入口点将在主入口点之后构建。您唯一可能的引用是从辅助入口点引用主库。您只能在一个方向上再次在辅助入口点之间进行引用。在构建过程中解析引用并确定辅助入口点的构建顺序,因此它们按照引用顺序构建。

对于您的示例,您唯一可以做的就是从 @my/my-lib 中导入内容到 @my/my-lib/lang 中,然后在 @my/my-lib/lang 中导入例如 @my/my-lib/types.

应该导入库而不是直接导入文件。

import { MainLibClass } from '@my/my-lib';
import { MyType} from '@my/my-lib/types';

辅助入口点就像主库中的另一个独立库,构建在它之上或提供一些连接到主入口点的独立功能。这就是为什么与图书馆一样,您永远无法在两个方向上获得参考。

更多我不能说,因为你没有提供任何信息为什么你需要双向参考。从我从你的设计中看到的情况来看,你最好为你现在已经成为次要入口点的每个部分创建单独的库。