web-dev-qa-db-fra.com

L'ajout de @ ng-bootstrap/ng-bootstrap à une erreur de projection de bibliothèque angulaire cli "doit être explicitement sur la liste blanche"

Je crée un projet angulaire 6 et une bibliothèque en utilisant angular cli. Dans ma bibliothèque, j'ai un composant qui nécessite @ng-bootstrap/ng-bootstrap alors je l'ai ajouté par npm i --save @ng-bootstrap/ng-bootstrap.

Lorsque j'essaie de construire la bibliothèque à l'aide de la commande ng build @candifood/core --prod, l'erreur suivante est renvoyée.

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

Quelqu'un l'a-t-il résolu?

7
Aniruddha Das

Mettre à jour

Cet avertissement provient de ng-packagr . Il s'avère que ng-packagr vous dit simplement qu'il veut que vous ajoutiez toutes les dépendances et devDependencies à une propriété "whitelistedNonPeerDependencies": [] dans ng-package.json. Par exemple:

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

Original

Je suis juste tombé dessus moi-même. Cet avertissement provient de ng-packagr je pense (sur lequel angular-cli s’appuie pour générer et empaqueter des bibliothèques). Je ne sais pas exactement ce qu'ils entendent par "liste blanche", car cette formulation ne semble pas directement expliquée dans la documentation de ng-packagr, mais cette question dans le rapport ng-packagr a une tonne d'options différentes pour savoir comment contourner le problème.

  1. Peers (tels que Angular, RxJS): dans ce cas d’utilisation, la dépendance à une tierce partie est une peerDependency de votre bibliothèque. Les utilisateurs de votre bibliothèque doivent inclure à la fois votre bibliothèque et la bibliothèque tierce dans leur section Dépendances.
  2. Incorporation (par exemple, bibliothèques JS héritées): vous avez une bibliothèque JavaScript héritée (par exemple, un adaptateur pour un backend propriétaire) et vous souhaitez intégrer le code hérité dans votre bibliothèque. Dans ce cas, la dépendance tierce est une devDependency de votre bibliothèque et sera incorporée à l'ensemble de votre bibliothèque.
  3. Mode mixte - intégré et homologue (par exemple, directives UX, guide de style angularisé): dans ce cas d'utilisation, la dépendance vis-à-vis d'une tierce partie est une homologie peerDependency mais également (partiellement) intégrée à votre bibliothèque. Vous voudrez peut-être réutiliser des feuilles de style CSS/SCSS/LESS existantes de la bibliothèque tierce de votre bibliothèque, en "insérant" le code de ce dernier dans votre bibliothèque. Dans le même temps, la dépendance vis-à-vis de tiers est une peerDependency de votre bibliothèque.

La question de github a plus d'informations à ce sujet.

16
John

Ajouté ceci dans ng-package.json et cela a fonctionné pour moi

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