Как использовать вторичные конечные точки для создания API для библиотеки Angular

Сценарий:

Я создал пользовательскую библиотеку пользовательского интерфейса, используя ng-packagr, экспортировал пользовательский components и некоторые классы моделей.

Проблема:

В основном проекте оператор import отлично работает для экспортированных компонентов, но не работает для экспортированных классов, и webpack не может скомпилировать ошибку:

модуль не найден, ошибка не может быть устранена my-custom-library/models

Код проекта библиотеки:

Класс модели: src / app / modules / my-custom-module / models / my-model.ts

export class MyModel {
  constructor() {
    // default values for props here
  }

  // ...props here
}

Индексный файл: src / app / modules / my-custom-module / models / index.ts

export * from './my-model';
export * from './my-other-model';

Экспорт файла в корневой каталог: models.ts

export * from './src/app/modules/my-custom-module/models/index';

ng-packagr файл в корневом каталоге: public_api.ts

export * from './models';

export * from './src/app/modules/my-custom-module/my-custom-module.module';
export * from './src/app/modules/my-custom-module/components/index';

Основной код проекта:

import {MyCustomModule} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library'; // works
import {MyModel} from 'my-custom-library/models'; // does not works

Цель: упрощение и разделение API библиотеки пользовательского интерфейса для конечных разработчиков.

Я считаю, что мне не хватает сопоставления webpack разрешения модуля, потому что VS Code распознает import, intellisense работает и даже Ctrl + Click переходит к правильному файлу, но webpack не удается компиляции.

Проблема с Git


person Syed Ali Taqi    schedule 05.07.2018    source источник


Ответы (1)


Мне удалось получить требуемый шаблон API с помощью Seconday End Points < / а>.

Кредиты: Алан Агиус на Проблема Git

person Syed Ali Taqi    schedule 11.07.2018
comment
Глядя на это (и пытаясь реализовать это), если мне нужно 5 вторичных конечных точек, это означает поддержку 5 копий моего кода, и моя сборка ng выполняется и строит все 5 копий ... или я делаю это неправильно? - person blomster; 20.11.2018
comment
@blomster: Я считаю, что вам чего-то не хватает, хотя я не могу быть уверен, не глядя на реальный код / ​​требования. - person Syed Ali Taqi; 20.11.2018