Ho scritto una semplice applicazione usando il nodo. Dipende da express, mongodb e mangusta (facile). Così, ho creato un file chiamato package.json
e mettere questo in esso:Come scrivere un file package.json in modo che tutte le dipendenze vengano scaricate con "npm install"
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
ho poi corse npm install
, aspettandosi NPM installare tali moduli e loro dipendenze. Il risultato è stato deludente:
[email protected] /home/merc/Synced/Development/Bookings/app/server
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected].1
└── [email protected]
Sono confuso da questo, come io so che express
esigenze jade
(e molto altro), e mongoose
esigenze mongodb
.
Se entro in node_modules/jade
e corro npm install
, il risultato dall'albero principale è molto diverso:
[email protected] /home/merc/Synced/Development/Bookings/app/server
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ └─┬ [email protected]
│ └─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
├─┬ [email protected]
│ └── [email protected]
└─┬ [email protected]
├── [email protected]
└── [email protected]
Quindi, express
ha cresciuto un sacco. Sembra che npm install
stia caricando solo di alcune delle dipendenze dei sotto-moduli.
Qualcuno può per favore far luce su questo? Perché mancano alcune dipendenze? Sto facendo qualcosa di sbagliato? (probabile)
Grazie!
Merc.
Un'altra cosa da notare è che se un pacchetto dipende da un modulo che può essere risolto più in alto nella catena di dipendenza, lo farà. Ad esempio, dal momento che hai 'mongodb' nel tuo pacchetto.json, Mongoose non ha bisogno di installare il proprio' mongodb'. –
Brandon, questa * è * la risposta. L'ho capito solo non molto tempo fa. Fondamentalmente, non installa MongoDb in Mongoose perché è stato risolto ulteriormente. Poiché questa * è * la risposta effettiva, puoi aggiungerla come risposta appropriata, piuttosto che come commento, in modo che io possa accettarla? – Merc
@Peter Buon punto, le applicazioni * generate * da espresso avranno comunque espresso come dipendenza BTW. La mia domanda, "perché mancano alcune dipendenze?", Ha la risposta semplice (fornita da Brandon) "Mancano perché sono state risolte più in alto nell'albero delle dipendenze". Grazie! – Merc