Как иметь только вторичные точки входа в ng-packagr

У меня есть библиотека Angular CLI, в которой каждый компонент следует импортировать только через свои отдельные точки входа (например, Angular Material):

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

Поэтому мне не нужна основная точка входа в конфигурацию ng-packagr.

У меня уже определены все вторичные точки входа, и я хочу удалить основную точку входа, чтобы пользователи не могли просто «импортировать {Bar} из '@myLib», но для ng-package.json требуется entryFile, и когда я оставляю entryFile пустым, я получаю сообщение об ошибке

ОШИБКА: внутренняя ошибка: не удалось получить символ для точки входа

Я должен добавить хотя бы один действительный экспорт в файл entryFile.

Команда Angular Material, похоже, получила это право - https://github.com/angular/components/blob/master/src/material/index.ts

Есть идеи, как это сделать?


person dex    schedule 23.01.2020    source источник


Ответы (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 {};

тогда вы должны получить структуру, которую ищете

Надеюсь, это поможет

person Juan Stoppa    schedule 13.02.2020
comment
Спасибо. Использование экспорта пустых объектов помогает справиться с этим, но мне не очень нравится иметь фиктивные объекты в моем коде, и он также генерирует эту пустую точку входа в dist - person dex; 27.10.2020