Зависимость @ng-bootstrap/ng-bootstrap должна быть явно белым списком

В angular 6 проекте, я создал угловую библиотеку с помощью angular cli команды ng g lierary @some/libName. В моей библиотеке есть компонент, которому нужен @ng-bootstrap/ng-bootstrap, поэтому я добавил его с помощью npm я --save @ng-bootstrap/ng-bootstrap.

Когда я пытаюсь собрать библиотеку, используя команду ng build @some/libName --prod она выдает ошибку ниже.

Dependency @ng-bootstrap/ng-bootstrap must be explicitly whiteliste

Кто-нибудь решил это?

Ответ 1

Обновить

Это предупреждение исходит от ng-packagr. Оказывается, ng-packagr просто говорит вам, что он хочет, чтобы вы добавили все зависимости в свойство "whitelistedNonPeerDependencies": [] в ng-package.json. Например:

{
  "whitelistedNonPeerDependencies": [
    "tslib",
    ...
  ]
}

оригинал

Просто столкнулся с этим сам. Мне кажется, это предупреждение исходит от ng-packagr (который angular-cli использует для создания и упаковки библиотек). Я не совсем уверен, что они имеют в виду под "белым списком", так как эта формулировка, по-видимому, не объясняется напрямую в документах ng-packagr, но эта проблема в репозитории ng-packagr имеет массу различных способов работы. вокруг проблемы.

  1. Peers (например, Angular, RxJS): в этом случае использование сторонней зависимости является peerDependency вашей библиотеки. Пользователям вашей библиотеки необходимо включить как свою библиотеку, так и стороннюю библиотеку в свой раздел зависимостей.
  2. Встраивание (например, унаследованные библиотеки JS): у вас есть унаследованная библиотека JavaScript (например, адаптер для проприетарного бэкэнда), и вы хотите (должны) встроить унаследованный код в вашу библиотеку. В этом случае сторонняя зависимость является devDependency вашей библиотеки и будет встроена в комплект вашей библиотеки.
  3. Смешанный режим - встроенный и одноранговый (например, рекомендации по UX, Angularized styleguide): в этом случае использования сторонняя зависимость является peerDependency, но также (частично) встроена в вашу библиотеку. Возможно, вы захотите повторно использовать существующие таблицы стилей CSS/SCSS/LESS из сторонней библиотеки в вашей библиотеке, таким образом "встраивая" код стороннего разработчика в вашу библиотеку. В то же время сторонняя зависимость - это peerDependency вашей библиотеки.

У проблемы Github есть больше информации об этом.

Ответ 2

Добавлено это в ng-package.json и это сработало для меня

{
  "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
  "lib": {
    "entryFile": "public_api.ts"
  },
  "whitelistedNonPeerDependencies": [
    "."
  ]
}