mac last node.js npm

node.js - last - Especifique la ruta a node_modules en package.json



npm last version (4)

¿Hay alguna manera de mover el directorio node_modules en una aplicación para decir / vendor / node_modules como lo hace Bower con el archivo bowerrc? Pensé que podría especificarse en package.json pero parece que no puedo encontrar una solución. Su ayuda es muy apreciada.


En resumen: no es posible y, como parece, nunca será compatible (consulte aquí https://github.com/npm/npm/issues/775 ).

Hay algunos métodos de trabajo extravagantes con el uso de las variables CLI o ENV (ver la respuesta actual seleccionada), .npmrc-Config-Files o npm link , lo que todos tienen en común: nunca son solo específicos del proyecto, sino siempre algún tipo de soluciones global .

Para mí, ninguna de esas soluciones es realmente limpia porque los contribuyentes a su proyecto siempre necesitan crear una configuración especial o tener algún conocimiento especial: no pueden simplemente npm install y funciona.

Entonces: O tendrá que poner su package.json en el mismo directorio donde desea instalar sus node_modules, o vivir con el hecho de que siempre estarán en el directorio raíz de su proyecto.


No estoy seguro de si esto es lo que tenía en mente, pero terminé con esta pregunta porque no pude instalar node_modules dentro de mi directorio de proyecto ya que estaba montado en un sistema de archivos que no admitía enlaces simbólicos (una VM "compartida" carpeta).

Encontré la siguiente solución:

  1. Copie el archivo package.json a una carpeta temporal en un sistema de archivos diferente
  2. Ejecute npm install allí
  3. Copie el directorio node_modules resultante nuevamente en el directorio del proyecto, usando cp -r --dereference para expandir los enlaces simbólicos en copias.

Espero que esto ayude a alguien que termine con esta pregunta cuando busque una forma de mover node_modules a un sistema de archivos diferente.

Otras opciones

Hay otra solución, que encontré en el problema de github al que @Charminbear se vinculó , pero esto no funciona con grunt porque no admite NODE_PATH según https://github.com/browserify/resolve/issues/136 :

supongamos que tiene /media/sf_shared y no puede instalar enlaces simbólicos allí, lo que significa que en realidad no puede instalar npm desde /media/sf_shared/myproject porque algunos módulos usan enlaces simbólicos.

  • $ mkdir /home/dan/myproject && cd /home/dan/myproject
  • $ ln -s /media/sf_shared/myproject/package.json (puede hacer un enlace simbólico en esta dirección, simplemente no puede crear uno dentro de / media / sf_shared)
  • $ npm install
  • $ cd /media/sf_shared/myproject
  • $ NODE_PATH=/home/dan/myproject/node_modules node index.js

Yarn admite esta característica:

# .yarnrc file in project root --modules-folder /node_modules

Pero su experiencia puede variar según los paquetes que utilice. No estoy seguro de que quieras entrar en esa madriguera de conejos.


sí, puedes configurar la variable de entorno NODE_PATH:

export NODE_PATH=''yourdir''/node_modules

Según el documento:

Si la variable de entorno NODE_PATH se establece en una lista de rutas absolutas delimitadas por dos puntos, el nodo buscará esas rutas en busca de módulos si no se encuentran en otro lugar. (Nota: en Windows, NODE_PATH está delimitado por punto y coma en lugar de dos puntos).

Además, el nodo buscará en las siguientes ubicaciones:

1: $ HOME / .node_modules

2: $ HOME / .node_libraries

3: $ PREFIX / lib / node

Donde $ HOME es el directorio de inicio del usuario y $ PREFIX es el nodo_prefijo configurado de nodo.

Estos son principalmente por razones históricas. Le recomendamos encarecidamente que coloque sus dependencias localmente en las carpetas node_modules. Se cargarán más rápido y de manera más confiable.

Source