【发布时间】:2020-07-08 05:16:35
【问题描述】:
我有一个关于 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-lib 导入@my/my-lib/lang 中的东西并反向吗?
【问题讨论】:
-
循环依赖很可能发生在你的场景中。您需要做的是在@my/my-lib 中导入@my/my-lib/lang。然后,如果您需要任何其他库中的某些功能,则直接将其导入 @my/my-lib/lang,而不是导入 @my/my-lib。
-
你尝试过 peerDependencies 吗?
标签: angular angular-library ng-packagr