如何在 ng-packagr 中只有辅助入口点

dex*_*dex 6 angular-material angular-cli angular ng-packagr

我有一个 Angular CLI 库,其中每个组件只能通过它们各自的入口点(如 Angular Material)导入:

import {Foo} from '@myLib/foo
import {Bar} from '@myLib/bar
Run Code Online (Sandbox Code Playgroud)

所以我不想要 ng-packagr 配置中的主要入口点。

我已经定义了所有次要入口点,我想删除主要入口点,因此用户不能只是“从 '@myLib导入 {Bar},但是 ng-package.json 需要一个 entryFile,当我离开 entryFile 时空我收到一个错误

错误:内部错误:无法获取入口点的符号

我必须在 entryFile 中添加至少一个有效的导出。

Angular Material 团队似乎已经做到了这一点 - https://github.com/angular/components/blob/master/src/material/index.ts

关于如何做到这一点的任何想法?

Jua*_*ppa 8

我不确定是否支持这种情况。

我正在使用 ng-packagr 进行类似的设置,似乎有效(虽然不完美)如下:

如果您有以下结构:

@mylib
??? src
|   ??? public_api.ts
|   ??? *.ts
??? ng-package.json
??? package.json
??? foo
|   ??? src
|   |   ??? public_api.ts
|   |   ??? *.ts
|   ??? ng-package.json
??? bar
    ??? src
    |   ??? public_api.ts
    |   ??? *.ts
    ??? ng-package.json
Run Code Online (Sandbox Code Playgroud)

如果您使用范围名称设置根 package.json

{
  "name": "@myLib"
}
Run Code Online (Sandbox Code Playgroud)

你将你的根 ng-package.json 设置为这个

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/@myLib"
}
Run Code Online (Sandbox Code Playgroud)

并在您的主 public_api.ts(即 /src/public_api.ts)中放置一个空对象导出

export default {};
Run Code Online (Sandbox Code Playgroud)

那么你应该得到你正在寻找的结构

希望能帮助到你

  • 谢谢。使用空对象导出确实可以解决问题,但我真的不喜欢在代码中包含虚拟对象,并且它还会生成这个空的入口点来 dist (2认同)