Cambiar la ubicación de node_modules

¿Hay alguna manera de cambiar la ubicación de la carpeta node_modules?

Por ejemplo:

- dir1 - dir2 - node_modules 

a:

 - dir1 - dir2 - node_modules 

El siguiente es el código que se ve en la carpeta node_modules por defecto

 Module.prototype.load = function(filename) { debug('load ' + JSON.stringify(filename) + ' for module ' + JSON.stringify(this.id)); assert(!this.loaded); this.filename = filename; this.paths = Module._nodeModulePaths(path.dirname(filename)); var extension = path.extname(filename) || '.js'; if (!Module._extensions[extension]) extension = '.js'; Module._extensions[extension](this, filename); this.loaded = true; }; 

Entonces, el siguiente es el patrón de búsqueda exacto:

  1. Node.JS busca ver si el módulo dado es un módulo central. (por ejemplo, http , fs , etc.) Siempre tiene prioridad en los módulos de carga.

  2. Si el módulo dado no es un módulo central (por ejemplo, http , fs , etc.), Node.js comenzará a buscar un directorio llamado node_modules .

    Comenzará en el directorio actual (relativo al archivo que se está ejecutando actualmente en Node.JS ) y luego se abrirá camino hasta la jerarquía de carpetas, verificando cada nivel para una carpeta node_modules. Una vez que Node.JS encuentra la carpeta node_modules , intentará cargar el módulo dado como un archivo JavaScript (.js) o como un subdirectorio con nombre; si encuentra el subdirectorio con nombre, intentará cargar el archivo de varias maneras. Así por ejemplo

  3. Si realiza una solicitud para cargar el módulo, “utils” y es un directorio, no un archivo .js, entonces:
    Node.JS buscará un directorio jerárquico para node_modules y utils de las siguientes maneras:

     ./node_modules/utils.js ./node_modules/utils/index.js ./node_modules/utils/package.json 
  4. Si Node.JS todavía no puede encontrar el archivo en los pasos anteriores, Node.js comenzará a buscar en las rutas del directorio desde las variables de entorno, es decir, NODE_PATH configurado en su máquina (obviamente establecido por el archivo instalador Node.JS si está en Windows) ) No se encuentra en todos los pasos anteriores, imprime un seguimiento de la stack para hacer
    Ejemplo : Error: Cannot find module 'yourfile'
    Para más información: el enlace está aquí, incluso el cíclico require () se explica muy bien …

De hecho, incluso podemos editar el archivo nodevars.bat en el que está la última línea:

if "%CD%\"=="%~dp0" cd /d "%HOMEDRIVE%%HOMEPATH%"

Podemos especificar nuestro propio directorio en lugar de cuidar el directorio principal del usuario:

%HOMEDRIVE%%HOMEPATH%

para que node-modules-location se atienda automáticamente.