Pourquoi utiliser le peer dépendances dans les mnp pour les plugins?

Pourquoi, par exemple, un plugin Grunt définir sa dépendance sur grunt comme "par les pairs dépendances"?

Pourquoi ne peut pas le plugin juste Grunt comme sa propre dépendance à grunt-plug/node_modules?

Par les pairs dépendances sont décrites ici: https://nodejs.org/en/blog/npm/peer-dependencies/

Mais je n'ai pas vraiment l'obtenir.

Exemple

Je travaille avec AppGyver des Stéroïdes à l'heure actuelle, qui utilise des tâches Grunt pour créer mes fichiers source dans un /dist/dossier pour être servi sur un périphérique local. Je suis assez nouveau à mnp et un grognement alors je veux bien comprendre ce qui se passe.

Jusqu'à présent, j'obtiens ceci:

[rootfolder]/paquet.json dit mnp il dépend de la grunt-steroids mnp package pour le développement:

  "devDependencies": {
    "grunt-steroids": "0.x"
  },

D'accord. L'exécution de npm install dans [rootfolder] détecte la dépendance et installe grunt-stéroïdes dans [rootfolder]/node_modules/grunt-stéroïdes.

Mnp lit ensuite [rootfolder]/node_modules/grunt-stéroïdes/paquet.json de sorte qu'il peut installer grunt-steroids propres dépendances.:

"devDependencies": {
    "grunt-contrib-nodeunit": "0.3.0",
    "grunt": "0.4.4"
  },
"dependencies": {
    "wrench": "1.5.4",
    "chalk": "0.3.0",
    "xml2js": "0.4.1",
    "lodash": "2.4.1"
  },
"peerDependencies": {
    "grunt": "0.4.4",
    "grunt-contrib-copy": "0.5.0",
    "grunt-contrib-clean": "0.5.0",
    "grunt-contrib-concat": "0.4.0",
    "grunt-contrib-coffee": "0.10.1",
    "grunt-contrib-sass": "0.7.3",
    "grunt-extend-config": "0.9.2"
  },

La "dépendances" paquets sont installés dans [rootfolder]/node_modules/grunt-stéroïdes/node_modules ce qui est logique pour moi.

La "devDependencies" ne sont pas installées, qui je suis sûr est contrôlée par npm la détection, je suis juste essayer d'utiliser grunt-steroids, et ne pas se développer sur elle.

Mais ensuite, nous avons la "peerDependencies".

Ceux-ci sont installés dans [rootfolder]/node_modules, et je ne comprends pas pourquoi là et pas dans [rootfolder]/node_modules/grunt-stéroïdes/node_modules afin que les conflits avec d'autres plugins grunt (ou autre) sont à éviter?

InformationsquelleAutor Thomas Stock | 2014-11-04