node.js - mega - notificaciones en tiempo real node js




Cómo escribir un archivo package.json para que todas las dependencias se descarguen con "npm install" (2)

La respuesta fue proporcionada por Brandon en un comentario a otra respuesta:

"Otra cosa a tener en cuenta es que si un paquete depende de un módulo que se puede resolver más adelante en la cadena de dependencia, lo hará. Por ejemplo, ya que tiene mongodb en su paquete.json, Mongoose no necesita instalar su propio mongodb. - Brandon Tilley hace 2 días

¡Gracias, Brandon! (Y esta es la respuesta ...)

Escribí una aplicación simple usando un nodo. Depende de express, mongodb y mangosta (fácil). Entonces, creé un archivo llamado package.json y lo puse en él:

{
  "name": "booking-dojo",
  "description": "Booking dojo app",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "express": "3.x",
    "mongodb": "*",
    "mongoose": "*"
  }
}

Luego npm install , esperando que npm instale esos 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 que el express necesita jade (y mucho más), y la mongoose necesita mongodb .
Si voy a node_modules/jade y ejecuto 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] 

Entonces, express ha crecido mucho. Parece que la 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.


Usted está confundido acerca de al menos 2 puntos.

Primero, expresar no depende de jade, como puede ver al leer el archivo node_modules/express/package.json :

  "dependencies": {
    "connect": "2.4.2",
    "commander": "0.6.1",
    "range-parser": "0.0.4",
    "mkdirp": "0.3.3",
    "cookie": "0.0.4",
    "crc": "0.2.0",
    "fresh": "0.1.0",
    "methods": "0.0.1",
    "send": "0.0.3",
    "debug": "*"
  }

Express, sin embargo, funciona con jade si está disponible, así como con muchos otros motores de plantillas. Entonces, para arreglar esta lista jade como una dependencia en su archivo package.json, estará bien.

Segundo, npm solo instala paquetes de nodo, no cosas de terceros como mongodb. Necesita instalar mongodb y cualquier otra dependencia que no sea un módulo npm utilizando otros medios ( apt-get , yum , instalación manual, etc.).

Entonces npm SÍ instala dependencias recursivamente, pero solo módulos npm.





npm