Escribí una aplicación simple usando un nodo. Depende de express, mongodb y mangosta (fácil). tanto, he creado un archivo llamado package.json
y poner esto en él:Cómo escribir un archivo package.json para que todas las dependencias se descarguen con "npm install"
{
"name": "booking-dojo",
"description": "Booking dojo app",
"version": "0.0.1",
"private": true,
"dependencies": {
"express": "3.x",
"mongodb": "*",
"mongoose": "*"
}
}
Entonces me encontré con npm install
, esperando NPM para instalar los módulos y sus dependencias. El resultado fue decepcionante:
[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]
Estoy confundido por esto, ya que sé que express
necesidades jade
(y mucho más), y mongoose
necesidades mongodb
.
Si entro en node_modules/jade
y corro npm install
, el resultado del árbol principal es muy diferente:
[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]
Así, express
tiene crecido mucho. Parece que npm install
solo está cargando algunas de las dependencias de los submódulos.
¿Alguien puede arrojar algo de luz sobre esto? ¿Por qué faltan algunas dependencias? ¿Estoy haciendo algo mal? (probable)
Gracias!
Merc.
Otra cosa a tener en cuenta es que si un paquete depende de un módulo que se puede resolver más arriba en la cadena de la dependencia, lo hará. Por ejemplo, dado que tiene 'mongodb' en su paquete.json, Mongoose no necesita instalar su propio' mongodb'. –
Brandon, esta * es * la respuesta. Acabo de descubrirlo no hace mucho tiempo. Básicamente, no instala MongoDb en Mongoose porque se resuelve más adelante. Como esta * es * la respuesta real, ¿puede agregarla como una respuesta adecuada, en lugar de un comentario, para poder aceptarla? – Merc
@Peter Buen punto, las aplicaciones * generadas * por expreso tendrán sin embargo expresarse como una dependencia por cierto. Mi pregunta, "¿por qué faltan algunas dependencias?", Tiene la respuesta simple (proporcionada por Brandon) "Faltan porque se resuelven más adelante en el árbol de la dependencia". ¡Gracias! – Merc