Perché, ad esempio, un plug-in Grunt definisce la sua dipendenza da grunt come " dipendenze tra pari "?
Perché il plugin non può avere Grunt come propria dipendenza in grunt-plug / node_modules ?
Le dipendenze tra pari sono descritte qui: https://nodejs.org/en/blog/npm/peer-dependencies/
Ma non capisco davvero.
Esempio
Al momento sto lavorando con AppGyver Steroids, che utilizza le attività di Grunt per creare i miei file sorgente in una cartella / dist / da servire su un dispositivo locale. Sono abbastanza nuovo su npm e grugnito, quindi voglio comprendere appieno cosa sta succedendo.
Finora ho capito questo:
[rootfolder] /package.json dice a npm che dipende dal grunt-steroids
pacchetto npm per lo sviluppo:
"devDependencies": {
"grunt-steroids": "0.x"
},
Va bene. L'esecuzione di npm install in [rootfolder] rileva la dipendenza e installa grunt-steroidi in [rootfolder] / node_modules / grunt-steroids .
Npm quindi legge [rootfolder] /node_modules/grunt-steroids/package.json in modo da poter installare le grunt-steroids
proprie dipendenze .:
"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"
},
I pacchetti " dipendenze " sono installati in [rootfolder] / node_modules / grunt-steroids / node_modules che è logico per me.
Le " devDependencies " non sono installate, che sono sicuro che è controllato da npm rilevando che sto solo cercando di usare grunt-steroids
e non svilupparle.
Ma poi abbiamo le " Dipendenze tra pari ".
Questi sono installati in [rootfolder] / node_modules e non capisco perché lì e non in [rootfolder] / node_modules / grunt-steroids / node_modules in modo da evitare conflitti con altri plug -in grugniti (o altro)?
"grunt": "0.4.4"
è sia in devDependencies che peerDependencies, e ha senso per me avere un duplicato lì, perché significa sia che ho bisogno di quelgrunt
pacchetto per il mio uso, ma anche che gli utenti del mio la libreria può utilizzare la propria versione, purché rispetti il blocco della versione peerDependencies. È corretto? Oppure l'esempio OP è molto negativo?