【问题标题】:How to only have secondary entry points in ng-packagr如何在 ng-packagr 中只有辅助入口点
【发布时间】:2020-05-09 08:12:30
【问题描述】:

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

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

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

我已经定义了所有辅助入口点,我想删除主要入口点,因此用户不能只是“import {Bar} from '@myLib”,而是 ng-package. json 需要一个 entryFile,当我将 entryFile 留空时,我得到一个错误

错误:内部错误:获取入口点符号失败

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

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

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

【问题讨论】:

    标签: angular angular-material angular-cli ng-packagr


    【解决方案1】:

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

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

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

    希望对你有帮助

    【讨论】:

    • 谢谢。使用空对象导出确实可以解决问题,但我真的不喜欢在我的代码中有虚拟对象,它还会生成这个空入口点到 dist
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2021-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多