Permisos NPM (error instalación global – requiere comando sudo)

Para instalar paquetes de forma global sin usar el comando sudo hay que arreglar los permisos.
Cuando los permisos no están configurados correctamente y se intenta instalar paquetes de forma global, retorna un error de acceso (EACCES error) y es necesario usar el comando sudo para poder instalar los paquetes de forma global.

El instructivo es para macOS y zsh.

El directorio por defecto donde npm escribe es /usr/local, se puede verificar con el comando:

npm config get prefix

Verificar permisos de la carpeta node_modules:

ls -la /usr/local/lib/node_modules

quien puede escribir o modificar sobre esta carpeta es root, por ello es necesario usar sudo.

Sin embargo es posible instalar paquetes globales sin el comando sudo, configurando el directorio a uno diferente de /usr/local.

  1. crear directorio con el nombre de elección (npm-global) en la carpeta de usuario
    • verificar usuario (cesargomez):
      pwd
    • crear carpeta:
      mkdir npm-global
    • ingresar a la carpeta que se creo
      cd npm-global
  2. configurar el directorio de npm para que sea el directorio que se acaba de crear:
    npm config set prefix /Users/usuario/carpeta_creada
    ejemplo:
    npm config set prefix /Users/cesargomez/npm-global
  3. Actualizar el directorio en el $PATH del sistema (zsh path):
    • ubicarse en el directorio raiz (home) y ejecutar el comando para abrir el archivo de configuración de zsh en VSCode
      code ~/.zshrc
    • Agregar la siguiente linea al archivo de configuración:
      export PATH=/Users/usuario/carpeta_creada/bin:$PATH
      ejemplo:
      export PATH=/Users/cesargomez/npm-global/bin:$PATH
    • Actualizar las variables:
      source ~/.zshrc

Esto arreglara la configuración de permisos.