ng-packagr и общие модули - PullRequest
       27

ng-packagr и общие модули

0 голосов
/ 27 апреля 2018

Я пытаюсь упаковать модуль X с зависимостями к Y, используя ng-pacakgr. X и Y имеют услуги и компоненты.

Структура приложения / модуля:

  • ModuleX импортирует ModuleY
  • X.forRoot () предоставляет ServiceY.
  • ServiceY используется в AppModule и ModuleX.
  • AppModule импортирует оба модуля X.forRoot () и Y.forRoot ().
AppModule
  - ModuleY
      - ServiceY
  - ModuleX
      - ServiceX
      - ModuleY
        - ServiceY

Упаковка ModuleX с помощью ng-packagr говорит мне следующее:

Не было указано имя для внешнего модуля 'Y' в options.globals - угадывание 'Y'

OK

Запуск приложения не дает никакой ошибки, но, похоже, у меня есть два экземпляра ServiceY.

Глядя на исходники webpack в chrome, у меня дважды ServiceY:

- webpack://
  - ./node_modules/Y/src/y.service.js
  - pathToX/node_modules/Y/src/y.service.js

Точка останова позиционирования в обоих конструкторах ServiceY показывает, что она останавливается в обоих классах.

Теоретически ServiceY должен создаваться один раз во всем моем приложении, поскольку ServiceY предоставляется в корне приложения

Я пытался добавить опцию umdModuleIds с различными значениями, но, похоже, ничего не изменилось.

В заключение, у меня есть два уникальных экземпляра ServiceY (один импортируется приложением, другой импортируется (и переопределяется) с помощью X).

Вопросы:

  • откуда приходит.
  • как я могу быть уверен, что Y встречается только один раз в моем приложении.
  • что я должен настроить в umdModuleIds (как мне найти moduleId)

Спасибо.

Информация о версии

ng-packagr: 2.4.2
@angular/*: 5.2.9
typescript: ~2.4.2
rxjs: 5.5.8
node: 6.10.3
npm: 3.10.10
...