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

How to only have secondary entry points in ng-packagr

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

import {Foo} from '@myLib/foo
import {Bar} from '@myLib/bar

所以我不想在 ng-packagr 配置中使用主入口点。

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

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

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

Angular Material 团队似乎做对了 - https://github.com/angular/components/blob/master/src/material/index.ts

关于如何做到这一点有什么想法吗?

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

我正在使用 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

如果您使用作用域的名称设置根 package.json

{
  "name": "@myLib"
}

您将根 ng-package.json 设置为此

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/@myLib"
}

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

export default {};

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

希望对您有所帮助