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?
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",
...
]
}
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.
- 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.
- 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.
- 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.
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": [
"."
]
}