Я пытаюсь упаковать модуль 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