NPM EACCES
Me toco probar el despliegue de aplicaciones NodeJS donde necesitaba instalar paquetes globales, instalar paquetes NodeJS globales en el sistema operativo no parece ser una buena práctica, entonces encontramos una solución a este problema.
Al ejecutar el comando:
1$ npm install -g <NOMBRE_PAQUETE>
Se presento un problema de permisos npm ERR! code EACCES y para solucionar el problema de forma inmediata era ejecutarlo con sudo, esta práctica es común pero no es lo que buscamos.
Buscando encontré que la solución para evitar el comando sudo es cambiar manualmente el directorio predeterminado de NPM.
Creación del Nuevo Directorio
Creamos una carpeta nueva donde se instalarán los nuevos programas:
1$ mkdir ~/.npm-global
Configure NPM para la Nueva Ruta del Directorio
Con el comando npm cambiamos la ruta del directorio de instalación de paquetes:
1$ npm config set prefix '~/.npm-global'
Variables de Entorno
En algunos casos, hay guías que te sugieren crear un archivo .profile para crear la variable, en este ejemplo agregamos la variable al archivo .bashrc:
1$ echo 'NPM_CONFIG_PREFIX=~/.npm-global' >> ~/.bashrc
Actualizamos Variables
Actualizamos las variables con el siguiente comando:
1$ source ~/.bashrc
Probamos la Instalación sin sudo
Para probar la nueva funcionalidad ejecutamos el mismo comando sin anteponer sudo:
1$ npm install -g <NOMBRE_PAQUETE>