¿Cambiar el directorio de instalación global predeterminado para los módulos node.js en Windows?

134

En mi instalación de Windows PATHincluye C:\Program Files\nodejs, donde node.exees ejecutable . Puedo lanzar nodedesde el shell, así como también npm. También me gustaría instalar nuevos ejecutables C:\Program Files\nodejs, pero parece imposible de lograr.

La configuración NODE_PATHy las NODE_MODULESvariables no cambian nada: las cosas todavía están instaladas %appdata%\npmpor defecto.

¿Cómo puedo cambiar la ruta de instalación global?

gremo
fuente
55
Probablemente porque gremo quiere tener todas las dependencias relacionadas con nodejs en un solo lugar. El problema es que con la actualización de nodejs perdería todos los paquetes instalados. Por otro lado, poner npm en la carpeta% appdata% del usuario hace que sea inaccesible para otros usuarios en la misma máquina. Piense en instalarlo como usuario normal frente a administrador.
Volker E.
Relacionado con stackoverflow.com/questions/6685892/…
Volker E.
1
Moverme de% AppData% a una ubicación más controlada tiene mucho sentido para mí, ya que se siente bastante% temp% -ish para mí. (Haciendo lo mismo para los perfiles de Firefox y algunos otros). Sin embargo, C:\Program Filesestá preparado para problemas constantes de administración correcta. ➪ Prefiero mover do D:\my-repository\npmo tal.
Frank Nocke
2
@WiredPrairie porque la instalación en las carpetas de usuario es bastante estúpida. El objetivo de la instalación de paquetes 'globalmente' es que un sistema en su conjunto puede acceder a estos paquetes.
Michael Trouw
44
Aquí hay una razón para hacer esto: en mi red no se le permite ejecutar código desde la carpeta AppData porque a menudo es así como se descarga y ejecuta el malware, especialmente CodeLocker. Es una capa adicional de protección contra malware. Dado que Node instala cosas allí, no puedo ejecutar módulos de nodo sin mover la ubicación de instalación o disminuir la seguridad en mi sistema.
Steve Hiner

Respuestas:

81

Todo lo que necesitas es leer la npm-foldersdocumentación . No quiero empezar mi cuaderno ganar ahora así que no puedo verificarlo, pero sólo se debería cambiar prefixa c:\Program Files\nodejsen su archivo de configuración. Si desea cambiarlo globalmente para todos los usuarios, edite el c:\Program Files\nodejs\npmrcarchivo, de lo contrario, cree / edite c:\Users\{username}\.npmrc.

Pero este cambio probablemente tendrá algunos efectos secundarios, así que lea esta discusión antes. Creo que tu idea no es buena.

ivoszz
fuente
33
Encontré el npmrcarchivo enC:\path\to\nodejs\node_modules\npm\npmrc
Volker E.
3
también cambie la ubicación de la memoria caché npm a un directorio local npm config set cache <new cache location> --globalsi tiene problemas al instalar módulos y la memoria caché está en una unidad compartida. Recibí este error, ENOENT: no such file or directorycuando el caché estaba en una unidad compartida
redDevil
1
No olvide actualizar la variable PATH del sistema para que apunte a la nueva carpeta npm.
Hayko Koryun
64

tratar de instalar paquetes globales en C:\Program Files (x86)\nodejs\me dio problemas de Ejecutar como administrador , porque npm estaba tratando de instalar en
C:\Program Files (x86)\nodejs\node_modules\

Para resolver esto, cambie el directorio de instalación global a C:\Users\{username}\AppData\Roaming\npm:

en C:\Users\{username}\, crear un .npmrcarchivo con contenido:

prefix = "C:\\Users\\{username}\\AppData\\Roaming\\npm"

referencia

entorno
nodejs x86 instalador en C:\Program Files (x86)\nodejs\Windows 7 Ultimate N 64-bit SP1
node --version: v0.10.28
npm --version: 1.4.10

Jake Berger
fuente
Esto es extraño. Estaba usando npm 2.1.6, y estaba instalando todos los módulos globales en% appdata% / npm, ahora que lo actualicé a 2.6.1, sigue intentando (y fallando) instalarlo en c: \ windows \ archivos de programa \ .. ¿Sabes cuándo cambió este comportamiento?
WORMSS
1
aquí hay algunos nodos wiki difs
Jake Berger
parece que tenía que ver con una forma diferente en la que instalé npm. Gracias por la diferencia sin embargo.
WORMSS
2
npm config set prefix C: \ Users \ {username} \ AppData \ Roaming \ npm
Bernhard Döbler
62

Puedes ver mi respuesta a esto en mi respuesta a otra pregunta .


En Windows, la ruta de instalación global está realmente en el directorio de perfil de su usuario

  • %USERPROFILE%\AppData\Roaming\npm
  • %USERPROFILE%\AppData\Roaming\npm-cache
  • ADVERTENCIA: Si está realizando eventos programados u otra automatización como un usuario diferente, asegúrese de ejecutarlo npm installcomo ese usuario. Algunos módulos / utilidades deben instalarse globalmente.
  • ERRORES DE INSTALADOR: Puede que tenga que crear estos directorios o agregar el ...\npmdirectorio a la ruta de sus usuarios usted mismo.

Para cambiar la ubicación "global" para todos los usuarios a una ubicación global compartida más apropiada %ALLUSERSPROFILE%\(npm|npm-cache)(haga esto como administrador):

  • crear un [NODE_INSTALL_PATH]\etc\directorio
    • esto es necesario antes de intentar npm config --global ...acciones
  • crear la (s) ubicación (es) global (es) para los módulos npm
    • C:\ProgramData\npm-cache - los módulos npm irán aquí
    • C:\ProgramData\npm - los scripts binarios para módulos instalados globalmente irán aquí
    • C:\ProgramData\npm\node_modules - los módulos instalados globalmente irán aquí
    • establecer los permisos adecuadamente
      • administradores: modificar
      • usuarios autenticados: leer / ejecutar
  • Establecer opciones de configuración global (símbolo del sistema del administrador)
    • npm config --global set prefix "C:\ProgramData\npm"
    • npm config --global set cache "C:\ProgramData\npm-cache"
  • Agregar C:\ProgramData\npma la variable de entorno Path de su sistema

Si desea cambiar la ubicación "global" de su usuario a %LOCALAPPDATA%\(npm|npm-cache)ruta en su lugar:

  • Crea los directorios necesarios
    • C:\Users\YOURNAME\AppData\Local\npm-cache - los módulos npm irán aquí
    • C:\Users\YOURNAME\AppData\Local\npm - los scripts binarios para los módulos instalados irán aquí
    • C:\Users\YOURNAME\AppData\Local\npm\node_modules - los módulos instalados globalmente irán aquí
  • Configurar npm
    • npm config set prefix "C:\Users\YOURNAME\AppData\Local\npm"
    • npm config set cache "C:\Users\YOURNAME\AppData\Local\npm-cache"
  • Agregue la nueva ruta npm a la de su entorno PATH.
    • setx PATH "%PATH%;C:\Users\YOURNAME\AppData\Local\npm"
Rastreador1
fuente
1
Establecer la ubicación global en C: \ ProgramData según su sugerencia intermedia parece ser el mejor lugar para esto en un entorno de Windows, pero no veo cómo puede establecer el prefijo en el archivo de configuración global cuando se utiliza el prefijo para encuentra el archivo de configuración global. Logré el mismo resultado editando el archivo de configuración incorporado C: \ Archivos de programa \ nodejs \ node_modules \ npm \ npmrc, pero sospecho que este cambio puede sobrescribirse en alguna etapa.
enpelli
@oenpelli En este caso, "global" es el .npmrcarchivo de su usuario en el directorio de inicio / perfil. Tendría que configurarse para todos los usuarios.
Rastreador1
Si no tengo permiso de administrador en Windows, ¿cómo puedo cambiar la instalación global?
liam xu
liam, puedes ajustar esto para tu usuario a través de un .npmrcarchivo en tu directorio de perfil ... aunque, mmm en ese punto.
Rastreador1
19

Sobre la base del concepto de instalación chocolateyy la idea sugerida por @Tracker, lo que funcionó para mí fue hacer lo siguiente y todos los usuarios en Windows estaban felices de trabajar con nodejsy npm.

Elija C:\ProgramData\nodejscomo directorio de instalación nodejse instale nodejscon cualquier usuario que sea miembro del grupo de administradores.

Esto se puede hacer con chocolate como: choco install nodejs.install -ia "'INSTALLDIR=C:\ProgramData\nodejs'"

Luego cree una carpeta llamada npm-cacheen la raíz del directorio de instalación, que después de lo anterior sería C:\ProgramData\nodejs\npm-cache.

Cree una carpeta llamada etcen la raíz del directorio de instalación, que después de lo anterior sería C:\ProgramData\nodejs\etc.

Establecer NODEvariable de entorno como C:\ProgramData\nodejs.

Establecer NODE_PATHvariable de entorno como C:\ProgramData\nodejs\node_modules.

Asegúrese de que %NODE%la variable de entorno creada anteriormente se agregue (o su ruta) se agregue a %PATH%la variable de entorno.

Edita %NODE_PATH%\npm\npmrccon el siguiente contenidoprefix=C:\ProgramData\nodejs

Desde el símbolo del sistema, establezca la configuración global de esta manera ...

npm config --global set prefix "C:\ProgramData\nodejs"

npm config --global set cache "C:\ProgramData\nodejs\npm-cache"

Es importante que los pasos anteriores se realicen preferiblemente en secuencia y antes de actualizar npm ( npm -g install npm@latest) o intentar instalar cualquier npmmódulo.

Realizar los pasos anteriores nos ayudó a ejecutar la nodejsinstalación en todo el sistema, fácilmente disponible para todos los usuarios con los permisos adecuados. Cada usuario puede ejecutar nodey npmsegún sea necesario.

Damilola
fuente
¿Cuál es la salida de 'npm config list'? Además, ¿estás ejecutando en Windows o Linux?
Damilola
Probé en ambos. npm config add prefixfunciona, pero ninguna de las variables de entorno mencionadas aquí. No quería abrir otra pregunta porque esta pregunta lo cubre, pero las respuestas no (además npm config).
trysis
La variable de entorno NODE es esencialmente solo para exponer los binarios. Aún necesita establecer el prefijo y la memoria caché (si no se estableció previamente) como se menciona en el procedimiento.
Damilola
Oh gracias. Eso no estaba muy claro en las respuestas ni en ningún otro lugar de Google. Estaba buscando variables de entorno, ya que son más fáciles de cambiar programáticamente, pero supongo que los comandos Bash de una sola línea también están bien.
trysis
Esto funcionó muy bien para mí. Gracias por las instrucciones detalladas!
ErnestoP
15

Debe usar este comando para establecer la instalación global de la instalación de paquetes npm

(git bash) npm config --global set prefix </path/you/want/to/use>/npm

(cmd / git-cmd) npm config --global set prefix <drive:\path\you\want\to\use>\npm

También puede considerar la npm-cacheubicación justo al lado. (como sería en una instalación normal de nodejs en windows)

(git bash) npm config --global set cache </path/you/want/to/use>/npm-cache

(cmd / git-cmd) npm config --global set cache <drive:\path\you\want\to\use>\npm-cache

davejoem
fuente
1
Encantado de ayudar. También sería una gran idea hacer un script de shel o un archivo por lotes para ejecutar esto cada vez que cambie su entorno. Al menos eso es lo que hago
davejoem
También vale la pena agregar "si hay espacios en el camino. Ej "C:\Program Files\blah".
taylorswiftfan
7
  • Paso 1 :

    npm config obtener prefijo

    • La ruta predeterminada es: %USERPROFILE%\AppData\Roaming\npm
  • Paso 2 :

    npm config get cache

    • La ruta predeterminada es: %USERPROFILE%\AppData\Roaming\npm-cache
  • Paso 3 :

    npm config set prefix \ npm

    • ejemplo npm config set prefix C:\\dev\\node\\npm
  • Paso 4 :

    npm config set cache \ npm-cache

    • ejemplo npm config set cache C:\\dev\\node\\npm-cache

Ejecute los pasos 1 y 2 nuevamente para verificar si las rutas se actualizan según sea necesario

Eso es. Cada vez que instale paquetes globales, debería verlos instalados dentro de \ npm \ node_modules

Kandeepa
fuente
Gracias, su solución resolvió mi problema, desde las últimas 2 semanas estaba tratando de resolver el problema, en realidad mi ruta de usuario de Windows tenía espacios como ABC XYZ WJS, así que cambié la ruta a solo una palabra, después de eso, mi instalación de npm estaba dando errores, por lo que su solución me ayuda a borrar el caché y establecer el caché en mi nueva ubicación.
Tahir Afridi
4

La carpeta global predeterminada es C:\Users\{username}\AppData\Roaming\npm. Puede crear (si no existe) un .npmrcarchivo C:\Users\{username}\y agregarlo prefix = "path\\to\\yourglobalfolder". Tenga en cuenta que, en Windows, la ruta debe estar separada por double back-slash.

angeldsWang
fuente
3

El uso de un enlace simbólico de Windows de las rutas C: \ Users {nombre de usuario} \ AppData \ Roaming \ npm y C: \ Users {nombre de usuario} \ AppData \ Roaming \ npm-cache al destino funcionó muy bien para mí.

Cómo agregar un enlace simbólico

ingrese la descripción de la imagen aquí

Dynamiclynk
fuente
1

En Windows, si desea mover la carpeta npm o nodejs del disco C a otra ubicación, pero aún así se asegura de que node y npm funcionen bien, puede crear un enlace simbólico como este: Abra el símbolo del sistema:

mklink /D "your_location_want_to_create_symlink" "location_of_node_npm_file"

Ejemplo:

mklink /D "C:\Users\MyUser\AppData\Roaming\npm" "D:\Nodejs Data\npm"

Ahora que ha creado un enlace simbólico para la carpeta npm, este enlace simbólico hará referencia a D:\Nodejs Data\npmTodo funcionará bien.

Vinh Trieu
fuente
0

Intenté la mayoría de las respuestas aquí, nada parece funcionar en mi caso. Así que cambié la ubicación Temp en mis variables env a C: \ npm. Entonces comenzó a funcionar. Esta no es una buena idea, sino una solución temporal.

Manoj
fuente
0

Eliminar la carpeta de nodos por completo de la carpeta de archivos del programa. Desinstale node.js y luego vuelva a instalarlo. Cambiar la ruta de la variable de entorno RUTA. eliminar el archivo .npmrc de C: \ users \ yourusername

Santosh Kadam
fuente
2
¿Tiene alguna documentación o fuentes que respalden su declaración? Como está escrito en su estado actual, es difícil saber si su sugerencia realmente funciona sin probarla usted mismo, lo que lleva tiempo que de otra manera podría ahorrarse.
Filnor
0

no requiere muchas configuraciones, solo vaya a la configuración avanzada del sistema, copie la ruta donde ha instalado su nodo y simplemente cree una variable de entorno y verifique con el comando node -v en su solicitud.

Animesh Saxena
fuente
0

Para cambiar el directorio de instalación global predeterminado para los módulos node.js (npm) en Windows, debe corregir 2 rutas.

Primero verifique la ruta actual donde se instalan los módulos de nodo, cuando intente instalarlos globalmente utilizando el siguiente comando:

npm list -g --depth = 0

Le devolverá la ruta actual donde los módulos de nodo se están instalando en este momento. Ejemplo: D: \ vsc \ typescript

Ahora visite la siguiente ruta para ver la carpeta npm y npm-cache. C: \ Usuarios \ nombre de usuario (Número OR) \ AppData \ Roaming

En la carpeta Roaming de su unidad C encontrará la carpeta npm y npm-cache. Haga clic en la carpeta + npm + y seleccione la ruta [Simplemente haga clic en la ruta de la barra que se seleccionará automáticamente, cópiela].Esta es una imagen de ruta que debe seleccionar

Una vez que copie esta ruta, establezca esto en las variables de entorno, con una ruta de nombre de variable (cualquier cosa que pueda seleccionar como nombre). Ahora que ha establecido la ruta para su carpeta npm, ahora es el momento de establecer el prefijo. Vaya dentro de la carpeta npm y verifique si existe la carpeta node_module, si no, cree una nueva carpeta llamada node_modules. Todos los módulos globales vendrán en esta carpeta después de completar todos los pasos.

Paso final: vaya a CMD y haga clic con el botón derecho en el siguiente comando:

npm establece el prefijo C: \ Users \ username (Number) \ AppData \ Roaming \ npm \ node_modules

Nuevamente, esta es la misma ruta que seleccionamos para la variable de entorno, solo estamos agregando una carpeta más en la ruta y esa es node_module.

Todo listo ... Pruébelo ahora ... Funcionará ...

TechTutsIndia
fuente
0

Encuentre la ruta actual de su instalación de paquete de nodo global siguiendo el comando.

npm list -g --depth = 0

Cambie esta ruta a la ruta correcta siguiendo el comando.

npm establece el prefijo C: \ Users \ username (Number) \ AppData \ Roaming \ npm \ node_modules

A mí me funcionó. Lea mi respuesta anterior para una mejor comprensión.

TechTutsIndia
fuente