Cómo instalo el paquete.dependencias json en el directorio actual usando npm


Tengo una aplicación web: fooapp. Tengo un package.json en la raíz. Quiero instalar todas las dependencias en un node_modules directory específico. ¿Cómo hago esto?

Lo que quiero

Digamos que tengo dos widget dependencias. Quiero terminar con una estructura de directorios como esta:

node_modules/
  widgetA
  widgetB
fooapp/
  package.js
  lib
  ..

Lo que consigo

Cuando corro npm install fooapp/ obtengo esto:

node_modules/
  fooapp/
    node_modules/
      widgetA
      widgetB
    package.js
    lib/
    ..
fooapp/
  package.js
  lib/
  ..

Npm hace una copia del directorio de mi aplicación en el directorio node_modules e instala los paquetes dentro de otro directorio node_modules.

Entiendo que esto tiene sentido para instalar un paquete. Pero yo no require() mi aplicación web dentro de otra cosa, la corro directamente. Estoy buscando una forma sencilla de instalar mis dependencias en un directorio node_modules específico.

Author: Michael Mior, 2011-12-03

2 answers

Corriendo:

npm install

Desde el directorio de la aplicación (es decir, donde el paquete.json se encuentra) instalará las dependencias para su aplicación, en lugar de instalarla como un módulo, como se describe aquí. Estos serán colocados ./ node_modules relativo a su paquete.archivo json (en realidad es un poco más complejo que esto, así que revisa los documentos de npm aquí).

Usted es libre de mover el directorio node_modules al directorio padre de su aplicación si lo desea, porque el nodo el mecanismo 'requerir' entiende esto. Sin embargo, si desea actualizar las dependencias de su aplicación con install/update, npm no verá el 'node_modules' reubicado y en su lugar creará un nuevo directorio, de nuevo relativo al paquete.json.

Para evitar esto, simplemente crea un enlace simbólico a los node_modules reubicados desde el directorio de tu app:

ln -s ../node_modules node_modules
 307
Author: ireddick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-03 13:53:08

En mi caso tengo que hacer

sudo npm install  

Mi proyecto está dentro de /var/www, así que también necesito establecer los permisos adecuados.

 12
Author: aesede,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-06 00:23:40