Как использовать вторичные конечные точки для создания API для библиотеки Angular - PullRequest
0 голосов
/ 05 июля 2018

Сценарий:

Я создал пользовательскую библиотеку пользовательского интерфейса, используя 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 библиотеки UI для конечных разработчиков.

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

Git Issue

1 Ответ

0 голосов
/ 11 июля 2018

Мне удалось получить требуемый шаблон API, используя Seconday End Points.

Кредиты: Алан Агиус при Выпуск Git

...