72 votes

CLI angulaire 6: où placer les dépendances de bibliothèque

Je convertis une bibliothèque ( ng-app-state ) pour utiliser le cli angulaire, maintenant que la v6 prend en charge les bibliothèques (yay!).

Après l'échafaudage et la copie dans du code, voici ma première question:

Comment / où ajouter des dépendances tierces?

À package.json , ou à projects/ng-app-state/package.json ?

70voto

Eric Simonton Points 580

S'avère que la réponse est du genre "les deux". La compréhension de la réponse vient de ceci:

  • package.json sera utilisé au cours du développement. Vous avez fait installer tous vos bibliothèques ici pour votre propre usage, y compris ceux que les utilisateurs auront également besoin. Vous ne devriez avoir qu'un node_modules/ répertoire à la racine de votre projet, et non pas au sein de la bibliothèque du répertoire (uniquement exécuter npm install et similaire ici).
  • projects/ng-app-state/package.json est ce qui va être déployé à mnp (avec quelques champs supplémentaires ajoutés par le processus de construction). De manière exemplaire, en dependencies et/ou peerDependencies que les utilisateurs de votre bibliothèque de besoin. Il n'y a rien de mettre devDependencies ici.

C'est la réponse complète. Lisez la suite pour voir un exemple.

Dans mon cas package.json a une longue liste de nombre dependencies et devDependencies (vous pouvez le voir ici), mais tout cela n'influence que moi (et tous ceux qui veulent contribuer à l' ng-app-state). projects/ng-app-state/package.json est beaucoup plus petit, et c'est ce qui affecte les utilisateurs de ma bibliothèque:

{
  "name": "ng-app-state",
  "version": "8.0.0",
  "author": "Simonton Software",
  "license": "MIT",
  "repository": "simontonsoftware/ng-app-state",
  "peerDependencies": {
    "@angular/common": ">=6.0.0 <7.0.0",
    "@angular/core": ">=6.0.0 <7.0.0",
    "@ngrx/store": ">=6.0.0 <7.0.0",
    "micro-dash": ">=3.5.0 <4.0.0"
  }
}

Après l'exécution de l' ng build np-app-state --prod à générer ce sera publié à la ngp, c'est ce qui finit en dist/ng-app-state/ (qui est ce qui devrait être publiée):

{
  "name": "ng-app-state",
  "version": "8.0.0",
  "author": "Simonton Software",
  "license": "MIT",
  "repository": "simontonsoftware/ng-app-state",
  "peerDependencies": {
    "@angular/common": ">=6.0.0 <7.0.0",
    "@angular/core": ">=6.0.0 <7.0.0",
    "@ngrx/store": ">=6.0.0 <7.0.0",
    "micro-dash": ">=3.5.0 <4.0.0"
  },
  "main": "bundles/ng-app-state.umd.js",
  "module": "fesm5/ng-app-state.js",
  "es2015": "fesm2015/ng-app-state.js",
  "esm5": "esm5/ng-app-state.js",
  "esm2015": "esm2015/ng-app-state.js",
  "fesm5": "fesm5/ng-app-state.js",
  "fesm2015": "fesm2015/ng-app-state.js",
  "typings": "ng-app-state.d.ts",
  "metadata": "ng-app-state.metadata.json",
  "sideEffects": false,
  "dependencies": {
    "tslib": "^1.9.0"
  }
}

16voto

Lal Points 382

Il doit être ajouté en package.json en peerDependencies

0voto

bhantol Points 1719

Les dépendances tierces doivent être placées dans dependencies de projects/ng-app-state/package.json

Cependant, si les dépendances tierces prennent également en charge ng 6, vous avez une question différente et plus de complexité au-delà de la portée de cette question. Je dirai brièvement que vous devrez peut-être appeler ng update sur leurs bibliothèques ou développer des schémas qui appellent les leurs, qui s'attendent à ce que leur version ng 6 de la bibliothèque soit présente.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X