Angular 个相互依赖的库辅助入口点
Angular library secondary entry points that depend on each other
我正在尝试制作一个 angular 库,每个模块都有辅助入口点。
我有三个模块:A、B 和 C。
A 是独立的,但 B 依赖于 C,这意味着我有 import
在 B.module.ts
.
中得到 C.module.ts
我关注了this article,所以我在每个模块中都有一个package.json
、index.ts
和public_api.ts
文件。
当我尝试构建库时,出现以下错误:
------------------------------------------------------------------------------
Building entry point '@org/library-name/src/lib/A'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
Bundling to FESM2015
Bundling to UMD
Minifying UMD bundle
Writing package metadata
Built @org/library-name/src/lib/A
------------------------------------------------------------------------------
Building entry point '@org/library-name/src/lib/B'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
ERROR: Unable to write a reference to CComponent in /.../projects/library-name/src/lib/C/C.component.ts from /.../projects/library-name/src/lib/C/C.module.ts
知道如何让它发挥作用吗?
提前致谢。
我可以告诉你我是如何解决这个问题的。
这里的问题是了解 ng-packagr
如何根据 entry-points/folder 结构构建我们的库。
在我的特殊情况下,我有以下结构:
输出是2块,对吧? my-lib/common
和 my-lib/common/big-chunk
碰巧辅助入口点是在主入口点之前构建的,所以有一个共享逻辑,我需要将它(并导出)放在辅助入口点 my-lib/common/big-chunk
上并使用它在主要的 my-lib/common
.
如果您发现自己需要共享逻辑,请考虑创建一个 shared
入口点。
我发现使用和实现辅助入口点非常棘手,可能需要进行一些重构才能使它们正常工作并充分利用它们带来的全部好处,但总的来说我认为这是完全值得的:)
我正在尝试制作一个 angular 库,每个模块都有辅助入口点。
我有三个模块:A、B 和 C。
A 是独立的,但 B 依赖于 C,这意味着我有 import
在 B.module.ts
.
C.module.ts
我关注了this article,所以我在每个模块中都有一个package.json
、index.ts
和public_api.ts
文件。
当我尝试构建库时,出现以下错误:
------------------------------------------------------------------------------
Building entry point '@org/library-name/src/lib/A'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
Bundling to FESM2015
Bundling to UMD
Minifying UMD bundle
Writing package metadata
Built @org/library-name/src/lib/A
------------------------------------------------------------------------------
Building entry point '@org/library-name/src/lib/B'
------------------------------------------------------------------------------
Compiling TypeScript sources through ngc
ERROR: Unable to write a reference to CComponent in /.../projects/library-name/src/lib/C/C.component.ts from /.../projects/library-name/src/lib/C/C.module.ts
知道如何让它发挥作用吗? 提前致谢。
我可以告诉你我是如何解决这个问题的。
这里的问题是了解 ng-packagr
如何根据 entry-points/folder 结构构建我们的库。
在我的特殊情况下,我有以下结构:
输出是2块,对吧? my-lib/common
和 my-lib/common/big-chunk
碰巧辅助入口点是在主入口点之前构建的,所以有一个共享逻辑,我需要将它(并导出)放在辅助入口点 my-lib/common/big-chunk
上并使用它在主要的 my-lib/common
.
如果您发现自己需要共享逻辑,请考虑创建一个 shared
入口点。
我发现使用和实现辅助入口点非常棘手,可能需要进行一些重构才能使它们正常工作并充分利用它们带来的全部好处,但总的来说我认为这是完全值得的:)