gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 14:56:44 32 4
gpt4 key购买 nike

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

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

  • 主库@my/my-lib
  • 辅助路径@my/my-lib/functions
  • 辅助路径@my/my-lib/constants
  • 辅助路径@my/my-lib/lang
  • 辅助路径@my/my-lib/broker
  • 辅助路径@my/my-lib/signalr
  • 辅助路径@my/my-lib/sso
  • 辅助路径@my/my-lib/types

这就是文件夹结构:

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/my-lib/lang 中的内容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';

辅助入口点就像主库中的另一个独立库,它构建在主库之上,或者提供一些连接到主入口点的独立功能。这就是为什么像库一样,你永远无法在两个方向上都有引用。

更多我不能说,因为你没有提供任何信息,为什么你需要引用资料才能双向进行。从我从您的设计中看到的情况来看,您最好为您现在已创建辅助入口点的每个部分创建单独的库。

关于具有子入口点循环依赖的 Angular 9 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60886468/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com